You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik自定义域名CNAME跳转404问题排查求助

解决Traefik自定义CNAME域名返回404的问题

你遇到的核心问题是Traefik的Frontend规则没有正确匹配所有指向ourdomain.com的自定义CNAME域名。初始的traefik.frontend.rule=Host:ourdomain.com只会匹配精确域名请求,而你尝试的Host:*太宽泛(可能会和其他服务的路由规则冲突),Host:ourdomain.com...这种写法更是不符合Traefik的规则语法,自然无法生效。

下面是针对你场景的具体解决方案和排查步骤:

一、正确的路由规则配置

根据你的自定义域名类型,选择对应的规则写法(这里针对Traefik v1.x版本,因为你使用的是traefik.frontend.rule配置项):

1. 自定义域名是ourdomain.com的子域名(如page.userA.ourdomain.com)

如果用户的自定义域名都是基于ourdomain.com的子域名,直接用通配符匹配即可:

traefik.frontend.rule=Host:*.ourdomain.com

如果需要捕获子域名用于后续业务处理,可以用正则匹配:

traefik.frontend.rule=HostRegexp:{subdomain:[a-z0-9-]+}.ourdomain.com

2. 自定义域名是独立域名(如page.userA.com)

如果用户的自定义域名是完全独立的,只是通过CNAME指向ourdomain.com,你需要让Traefik匹配所有Host请求,但要设置低优先级避免影响其他服务:

traefik.frontend.rule=HostRegexp:{host:.+}
traefik.frontend.priority=1  # 让精确匹配的规则优先生效

如果能提前预知所有自定义域名,也可以直接列出多个Host:

traefik.frontend.rule=Host:ourdomain.com,page.userA.com,page.userB.com

二、关键排查步骤

  • 确认配置已生效:修改规则后,重启你的应用容器(如果用Docker Provider,Traefik默认会自动感知配置变化,但手动重启更保险)。
  • 验证CNAME解析:用命令nslookup page.userA.com检查域名是否正确解析到ourdomain.com的IP地址。
  • 查看Traefik日志:开启debug日志(添加traefik.logLevel=debug配置),查看请求的Host头信息,确认规则是否匹配到了对应的请求。
  • 检查Host头传递:确保Traefik正确传递了请求的Host头给应用,默认是开启的,也可以显式设置traefik.frontend.passHostHeader=true。

内容的提问来源于stack exchange,提问作者gamalan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:07:45