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

家庭网络中无法访问Traefik后端Apache容器,求问题排查

排查Apache子域名无法访问的问题

一、先检查Traefik与Apache的容器配置

Traefik UI能识别到Apache服务,说明服务注册流程没问题,但路由或端口映射可能存在疏漏:

  • 验证Apache容器的Traefik标签
    确保docker-compose.yml里Apache容器的标签配置准确:

    • 规则必须精确匹配子域名:traefik.http.routers.apache.rule=Host(apache.docker.mydomain.com)
    • 指向Apache容器内部的默认端口:traefik.http.services.apache.loadbalancer.server.port=80(别误写为主机端口)
    • 绑定Traefik已启用的入口点:比如traefik.http.routers.apache.entrypoints=web(如果用HTTPS则改为websecure,需对应traefik.yml里的entrypoints配置)
  • 检查Docker网络配置
    确保Traefik和Apache容器加入同一个自定义Docker网络(默认桥接网络可能存在DNS解析问题),比如在docker-compose.yml里定义:

    networks:
      traefik-net:
        external: true
    

    并给两个容器都配置networks: traefik-net

  • 查看Traefik调试日志
    在traefik.yml里开启debug级日志,排查请求路由情况:

    log:
      level: DEBUG
    

    重启Traefik后,查看日志中是否有apache.docker.mydomain.com的请求记录,以及是否存在路由匹配失败的提示

二、排查pfSense的配置

  • 确认子域名DNS解析
    用nslookup apache.docker.mydomain.com或dig apache.docker.mydomain.com验证:不管是内网DNS还是外网DNS,都要确保该子域名解析到Docker主机的对应IP(内网访问用主机内网IP,外网访问用公网IP)

  • 端口转发规则检查
    如果是外网访问,pfSense需将80/443端口转发到Docker主机的对应端口(即Traefik容器映射的主机端口,比如主机80映射到Traefik的80端口),同时确认防火墙规则允许80/443流量进入Docker主机

  • 配置NAT反射(Hairpin NAT)
    内网设备通过公网域名访问时,必须在pfSense的NAT>端口转发中启用“NAT反射”,否则内网流量无法正常回环到内部服务

三、本地验证服务可用性

  • 在Docker主机上执行docker exec -it <apache容器名> curl localhost,确认Apache容器内部能正常返回默认页面
  • 在Docker主机上通过容器名访问:curl http://<apache容器名>(同一自定义网络下),验证容器间通信正常
  • 在内网其他设备直接访问http://<Docker主机IP>:<Apache映射的主机端口>,确认Apache服务本身无问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:15:16