Traefik反向代理Docker部署的多WordPress实例出现重定向次数过多问题
重定向过多问题修复方案
- 核心原因:Traefik作为反向代理处理了HTTPS请求后,转发给WordPress容器的是HTTP协议请求,WordPress无法识别外层HTTPS环境,会持续触发HTTPS跳转逻辑,形成重定向循环。
- 修复步骤:
- 在WordPress容器的
docker-compose.yml配置中,新增请求头传递的中间件配置,确保反向代理的协议信息正确传递给上游服务:services: 你的wordpress服务名: # 其余原有配置保持不变 labels: # 其余原有traefik配置保持不变 - "traefik.http.middlewares.wp-headers.headers.customRequestHeaders.X-Forwarded-Proto=https" - "traefik.http.routers.你的wp路由名.middlewares=wp-headers@docker" - 进入WordPress容器的站点根目录,修改
wp-config.php配置文件,新增如下配置强制识别HTTPS环境:if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443; } // 替换为你的实际站点域名 define('WP_HOME', 'https://你的域名'); define('WP_SITEURL', 'https://你的域名'); - 检查是否存在重复跳转规则:不要同时在Traefik和WordPress两端配置HTTP强制跳HTTPS,仅保留Traefik侧的自动跳转配置即可;如果WordPress安装了重定向类插件,可临时禁用测试。
- 确认Traefik路由配置无冲突:每个站点的HTTPS路由需正确关联443端口的entrypoint,证书解析配置无误,没有出现同域名同时匹配HTTP和HTTPS路由的情况。
- 在WordPress容器的
多WordPress实例部署注意事项
- 每个WordPress实例对应独立的数据库服务,需分别配置不同的数据库名、用户名、密码,避免数据冲突。
- 每个实例的持久化存储卷挂载路径需做区分,避免不同站点的文件互相覆盖。
- 每个实例的Traefik路由规则中的Host匹配值需对应各自的域名,确保流量能正确转发到对应容器。
内容的提问来源于stack exchange,提问作者Ranhousecode
相关产品推荐
相关产品推荐

