Traefik Dashboard显示空白 /api/overview请求返回404排查
问题根因
你的判断完全准确,问题出在路由规则配置缺失:
- 现有Dashboard路由仅匹配
/dashboard路径前缀,但Traefik Dashboard页面加载后,会主动请求根路径下的/api/overview等内置接口拉取运行数据,这部分请求没有匹配到Dashboard的路由规则。 - 业务服务的路由规则配置为全匹配
Host(my.site.com),没有路径限制,所有未被其他路由命中的同域名请求都会被转发到Django服务,Django不存在Traefik的内置接口路径,直接返回404,最终出现Dashboard页面框架能正常打开、但所有数据字段空白的现象。 - 配置中
traefik.http.routers.api.entrypoints=dashboard为无效配置,你没有定义名为dashboard的入口点,该行不会产生任何作用。
修复方案
两种方案可按需选择,优先推荐第一种,配置最简单且完全无路径冲突:
方案1:为Dashboard分配独立子域名(推荐)
通过独立子域名访问Dashboard,和主站业务路径完全隔离,不会和现有/api业务接口产生任何冲突:
- 为域名添加一条A记录,例如
traefik.my.site.com,解析到服务器公网IP。 - 删除traefik服务labels段中的无效entrypoint配置,替换Dashboard路由规则为子域名匹配,修改后traefik服务的labels段如下:
labels: - "traefik.enable=true" - "traefik.http.routers.dashboard.rule=Host(`traefik.my.site.com`)" - "traefik.http.routers.dashboard.tls=true" - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt" - "traefik.http.routers.dashboard.service=api@internal" - "traefik.http.routers.dashboard.middlewares=auth" - "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
- 重启traefik服务,访问
https://traefik.my.site.com/dashboard/(注意末尾斜杠不可省略)即可正常加载所有Dashboard数据,主站业务接口、后台路径完全不受影响。
方案2:保留主站路径访问模式
如果需要继续在主域名下通过路径访问Dashboard,需要统一Dashboard的访问前缀,避免和业务/api路径冲突:
- 在traefik服务的command启动参数中添加Dashboard资源路径配置:
command: - "--api=true" - "--api.dashboard=true" - "--providers.docker=true" - "--api.dashboard.assetpath=/traefik"
- 修改traefik服务的labels段,添加前缀剥离中间件,同时给Dashboard路由设置更高优先级,确保相关请求优先匹配内置服务:
labels: - "traefik.enable=true" - "traefik.http.routers.dashboard.rule=Host(`my.site.com`) && PathPrefix(`/traefik`)" - "traefik.http.routers.dashboard.priority=100" - "traefik.http.routers.dashboard.tls=true" - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt" - "traefik.http.routers.dashboard.service=api@internal" - "traefik.http.routers.dashboard.middlewares=auth,strip-traefik-prefix" - "traefik.http.middlewares.strip-traefik-prefix.stripprefix.prefixes=/traefik" - "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
- 重启traefik服务后,访问
https://my.site.com/traefik/dashboard/即可正常使用,Dashboard发起的所有API请求都会走/traefik/api前缀,不会转发到业务服务。
内容的提问来源于stack exchange,提问作者Dmitriy Lunev
相关产品推荐
相关产品推荐

