DEBUG.WIKI
京东云;让 AI 进入真实业务;零售 · 物流 · 客服 · 硬件;查看方案 →
ZgoCloud:多地区部署,按需选节点;日本、美国、香港、德国
Evoxt;最高 6.0GHz CPU;高频云服务器 · 免费每周备份;查看配置 →

Traefik 同一站点 444 正常、443 返回 404:检查重复入口标签

同一 HTTPS router 写了重复 entrypoints 标签,444 正常而 443 返回 404;合并入口列表,并核对两个入口的认证与访问限制。

同一个域名,通过 HTTPS 的 444 端口能打开应用,默认 443 却显示 404 page not found。如果两个请求都已到达 Traefik,先查看路由最终绑定了哪些 entryPoints。为同一个 router 写两条同名 entrypoints 标签,不会把两个入口合并起来;后一项可能覆盖前一项。

本文针对 Traefik v3 的 Docker 标签配置:计划让一个 HTTPS router 同时处理两个已存在的入口。证书失败、连接超时,以及应用自己返回的 404,需要按各自层次继续检查,不能都归因于标签覆盖。

端口可访问,路由也可能没有绑定它

先保留当前启动配置和 Compose 文件,查看 Traefik 日志、受保护的管理界面或已有访问日志。确认 443 上的响应确实来自 Traefik,以及请求使用了正确的域名。直接访问 IP 时,Host 匹配条件可能不同;不要为排查方便把 Dashboard 无认证地暴露到公网。

比较两个入口的静态定义、Traefik 容器的端口发布和 router 的生效配置。入口名不是端口号的别名:websecure 和 https-external 只有在静态配置中分别定义、监听并可从客户端到达时,才有意义。

下面这段应用标签是重复键的错误示例:

labels:
  - "traefik.http.routers.cloud-sec.entrypoints=websecure"
  - "traefik.http.routers.cloud-sec.entrypoints=https-external"

如果最终只剩 https-external,该 router 就没有被绑定到 websecure,443 上也可能没有其他匹配路由。重复项究竟怎样被输入工具处理,应以容器实际标签与 Traefik 生效配置为准,不用编辑器里两行都存在来证明已经配置两个入口。

在同一个标签里列出两个入口

entrypoints 标签接受逗号分隔的入口名称。下面是应用容器的标签结构示例,域名、router 名称、service 和端口需要替换:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.cloud-sec.rule=Host(`cloud.example.com`)"
  - "traefik.http.routers.cloud-sec.entrypoints=websecure,https-external"
  - "traefik.http.routers.cloud-sec.tls=true"
  - "traefik.http.routers.cloud-sec.service=cloud-app"
  - "traefik.http.services.cloud-app.loadbalancer.server.port=80"

这不是完整部署清单。保留项目现有的证书解析器或受控证书、后端网络、其他标签与持久卷。service 的端口应是应用在容器内实际监听的端口;将 router 绑定到 444,不代表后端也要改成 444。

应用标签变化需要按原部署流程更新或重建对应应用容器,可能造成短暂中断。先保存原清单并核对卷与依赖,不能为了修改标签顺手删除数据卷。静态入口定义如果也发生变化,还需要按 Traefik 的启动配置更新流程处理,不能期待只修改应用标签就新增监听端口。

两个入口的安全策略也要逐个核对

一个入口上的默认认证或 IP 白名单,不会自然复制到另一个入口。entryPoint 的 http.middlewares 会作用于通过该入口匹配的 router;若 443 定义了访问限制、444 没有,绑定两个入口后可能让同一个应用从另一个端口绕开原限制。

确认两个入口各自应允许哪些访问者,并检查入口中间件与 router 中间件的实际组合。需要统一认证时,按现有策略在正确层次配置,保留声明顺序及 provider 后缀。不要仅以两个端口都能打开页面作为验收,授权和未授权请求的结果也须符合设计。

已有 HTTP 入口若在静态配置中统一重定向到 HTTPS,另建一个相同域名的 HTTP router 并不修复 HTTPS router 的重复标签。先解决实际入口绑定,避免新增无关路由掩盖问题。

修改后怎样区分剩余错误

用相同域名分别访问 443 和 444,确认两次请求命中了预期 HTTPS router,证书校验通过,应用功能及访问限制正常。若仍返回 Traefik 的 404,继续核对 Host 规则、入口名称、生效标签和冲突 router;若已命中 router 但出现 502 或 504,下一步应检查后端服务和连接路径。

证书告警则需核对域名和 TLS 配置,它与有没有匹配到业务路由是两项检查。回退时恢复保存的应用标签与相关静态配置,再验证原来的入口和安全策略;不要只删掉第二个入口后留下扩大了的访问范围。