如何使用Traefik映射Docker服务不同端口,将443对接WordPress容器8443端口
你的配置缺失了Traefik后端转发端口的指定规则,该规则需要在服务的Traefik标签中通过service配置定义,和middleware无关。middleware仅用于处理请求跳转、Header修改等流量处理逻辑,不负责后端服务的端口指定。
你可以根据需求选择以下两种配置方案:
方案1(推荐):Traefik统一处理SSL证书,转发到容器HTTP端口
这是最常用的部署方式,Traefik完成HTTPS证书校验和解密后,用HTTP协议和WordPress容器通信,不需要处理容器自身的HTTPS证书,性能更优。
你只需要在WordPress服务的labels末尾新增一行配置,指定转发端口为8181即可:
- "traefik.http.services.wordpress-secured.loadbalancer.server.port=8181"
修改完成后的完整labels配置如下:
labels: - "traefik.enable=true" - "traefik.docker.network=traefik" - "traefik.http.routers.wordpress.rule=Host(`domain.com`)" - "traefik.http.routers.wordpress.entrypoints=web" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" - "traefik.http.routers.wordpress.middlewares=redirect-to-https@docker" - "traefik.http.routers.wordpress-secured.rule=Host(`domain.com`)" - "traefik.http.routers.wordpress-secured.entrypoints=websecure" - "traefik.http.routers.wordpress-secured.tls=true" - "traefik.http.routers.wordpress-secured.tls.certresolver=myresolver" # 新增后端转发端口配置 - "traefik.http.services.wordpress-secured.loadbalancer.server.port=8181"
额外需要在WordPress的environment配置中新增变量,避免站点出现样式错乱、跳转错误的问题:
WORDPRESS_ENABLE_REVERSE_PROXY: yes
方案2:直接转发到容器的8443 HTTPS端口
如果你需要让容器自身处理HTTPS通信,需要同时指定端口和通信协议:
在labels中新增以下两行配置:
- "traefik.http.services.wordpress-secured.loadbalancer.server.port=8443" - "traefik.http.services.wordpress-secured.loadbalancer.server.scheme=https"
补充说明
你之前配置的expose: [8443]没有生效是因为该配置仅为端口声明,没有实际控制功能,只要Traefik和WordPress容器在同一个traefik网络下,就可以直接通信,不需要额外配置端口暴露。
之前配置不生效的根本原因是该Bitnami镜像同时暴露了8181和8443两个端口,Traefik无法自动选择转发端口,必须手动指定。
内容的提问来源于stack exchange,提问作者fruxz
相关产品推荐
相关产品推荐

