Docker Swarm部署环境下Traefik Dashboard访问始终返回404问题求助
问题根因
- 你在Traefik启动参数中配置了
--providers.docker.exposedByDefault=false,即默认不暴露任何Docker服务给Traefik代理。但你给reverse-proxy服务配置的dashboard路由相关标签,缺少traefik.enable=true配置项,导致Traefik没有加载对应的dashboard路由规则,访问时自然返回404。
修复方案
- 修改
traefik.yml文件,在reverse-proxy服务的deploy.labels段新增traefik.enable=true配置,修改后的labels部分如下:
deploy: labels: - "traefik.enable=true" # 新增这行 # 因Swarm API不支持自动获取端口需手动指定 - "traefik.http.services.reverse-proxy.loadbalancer.server.port=80" # Dashboard配置 - "traefik.http.routers.dashboard.rule=Host(`gateway.localhost`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))" - "traefik.http.routers.dashboard.service=api@internal" - "traefik.http.routers.dashboard.entrypoints=web" - "traefik.http.routers.dashboard.middlewares=auth" - "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
- 重新执行部署命令更新栈:
docker stack deploy -c traefik.yml traefik - 等待配置生效后,访问
http://gateway.localhost/dashboard/,在弹出的基础认证框中输入配置的账号密码(账号test密码test、账号test2密码test2),即可正常访问Dashboard。
补充说明
http://gateway.localhost没有匹配的路由规则,返回404属于正常现象,只有路径前缀为/api或/dashboard的请求才会被路由到Dashboard服务。
内容的提问来源于stack exchange,提问作者Joba
相关产品推荐
相关产品推荐

