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

Traefik无法通过外部IP/端口路由访问子域名配置问题排查

Traefik 子域名路由不通、访问无响应/空白页修复方案

按以下优先级逐一排查,90%的同类问题都能定位:

1. 先确认端口映射配置正确

docker-compose.yml 中Traefik服务的端口段必须将80、443绑定到宿主机全网卡地址,禁止仅绑定127.0.0.1,否则外部流量完全无法进入Traefik进程。正确配置参考:

services:
  traefik:
    image: traefik:v2.11
    ports:
      - "0.0.0.0:80:80"
      - "0.0.0.0:443:443"
      # 仪表盘如果不需要公网访问,仅绑定本地回环即可
      - "127.0.0.1:8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data:/etc/traefik:ro

校验方式:在Traefik所在宿主机执行 ss -tulpn | grep -E ':(80|443)',确认traefik进程在0.0.0.0:80、0.0.0.0:443上处于监听状态。同时检查路由器端口转发规则,确认80、443的TCP请求全部转发到Traefik宿主机的内网IP,不要转发到其他设备。

2. 修复静态配置(data/traefik.yml)错误

  • 删掉所有重复的配置段,尤其是重复定义的entryPoints、providers块,重复配置会导致Traefik加载时后加载的段覆盖之前的正确规则,直接引发路由失效
  • 确认入口点配置正确:必须明确定义web(对应80端口)、websecure(对应443端口)两个入口点,不要将入口点绑定到容器内部的127.0.0.1地址
  • 确认provider配置正确:如果用Docker服务发现,要开启Docker provider;如果用config.yml做动态配置,要正确配置文件provider的路径,建议加watch: true参数实现配置热加载,示例:
    entryPoints:
      web:
        address: ":80"
      websecure:
        address: ":443"
    providers:
      docker:
        endpoint: "unix:///var/run/docker.sock"
        exposedByDefault: false
      file:
        filename: "/etc/traefik/config.yml"
        watch: true
    
    注意如果开了exposedByDefault: false,所有需要暴露的Docker服务(比如Portainer)必须手动加Traefik路由标签,否则不会自动生成路由规则。

3. 修复动态配置(data/config.yml + 服务标签)错误

  • 路由规则校验:所有子域名路由的rule字段必须严格匹配域名,格式为Host(traefik-dashboard.local.example.com),注意反引号转义、域名拼写完全一致,不要多写路径前缀或后缀
  • 后端服务地址校验:如果路由的是Docker外部的服务(比如裸机部署的Pi-hole),服务地址不能填127.0.0.1,要填宿主机的Docker网桥网关IP(默认为172.17.0.1),或者把Traefik加入和目标服务同属的Docker网络,否则Traefik无法连通后端,会直接返回空白页、502错误
  • Pi-hole空白页专项修复:Pi-hole的Web服务默认监听80端口,不要错填其他后端端口;同时给Pi-hole路由添加反向代理头中间件,补全X-Forwarded-For、X-Forwarded-Proto等头字段,否则Pi-hole Web接口会因为代理头缺失返回空响应

4. 修复DNS解析链路问题

  • 公网访问场景:不要只在DigitalOcean添加traefik-dashboard子域名的A记录,所有需要公网访问的子域名(包括pihole.local.example.com)都要添加A记录指向你的公网IP,否则公网用户根本找不到你的服务地址
  • 内网访问场景:如果路由器没有开启NAT回流(Hairpin NAT),不要在Pi-hole里把子域名解析到公网IP,要直接解析到Traefik宿主机的内网IP,否则内网流量绕到公网再回来会被路由器拦截,导致无响应

5. 日志定位方法

如果以上配置检查完还是有问题,在静态配置里打开DEBUG级别的日志和访问日志:

log:
  level: DEBUG
accessLog: {}

重启Traefik后查看日志:访问子域名时如果日志里没有任何路由匹配记录,说明路由规则、入口点配置错误;如果匹配到路由但是报后端连接超时/拒绝,就是后端服务地址、网络连通性的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.20 16:15:48