Traefik 2路由添加TLS配置后服务不可用问题排查
故障根因
两个配置错误直接导致当前异常,证书签发逻辑本身无问题(acme.json已生成有效证书,说明ACME挑战流程配置正确):
- Traefik容器未映射443端口到宿主机:你在
traefik.toml中定义了websecure入口点监听容器内443端口,但docker-compose.yml的端口映射段只配置了80、8080端口的映射,宿主机443端口无进程监听,访问HTTPS时自然返回ERR_CONNECTION_REFUSED。 - TLS路由默认绑定入口点逻辑:给whoami路由添加
tls=true配置后,Traefik会默认将该路由绑定到443端口的websecure入口点,不再注册到80端口的web入口点,因此访问HTTP地址时80端口上没有匹配whoami.domain.dev的路由,直接返回404。
修复步骤
- 修改
docker-compose.yml中reverseproxy服务的端口配置,补充443端口映射:ports: - "80:80" - "443:443" - "8080:8080" - (推荐配置)添加HTTP到HTTPS的自动跳转,避免HTTP访问返回404,二选一即可:
- 全局跳转(所有HTTP请求默认跳HTTPS):在
traefik.toml的[entryPoints.web]配置段下添加如下内容:[entryPoints.web.http.redirections.entryPoint] to = "websecure" scheme = "https" permanent = true - 单服务跳转(仅whoami服务跳转HTTPS):在whoami服务的labels段补充如下标签:
- "traefik.http.routers.whoami-http.rule=Host(`whoami.domain.dev`)" - "traefik.http.routers.whoami-http.entrypoints=web" - "traefik.http.middlewares.whoami-redirect.redirectscheme.scheme=https" - "traefik.http.routers.whoami-http.middlewares=whoami-redirect"
- 全局跳转(所有HTTP请求默认跳HTTPS):在
- 重启容器加载配置:
docker-compose up -d
重启后验证:访问https://whoami.domain.dev可正常打开whoami页面,证书可信;访问HTTP地址会自动跳转到HTTPS地址,无404问题。
内容的提问来源于stack exchange,提问作者tyhupo
相关产品推荐
相关产品推荐

