Docker部署WordPress经Apache反向代理后重定向至127.0.0.1求助
解决方案:WordPress通过Apache反向代理后重定向到本地IP的问题
核心原因
你的Apache反向代理未将真实的外部请求域名、协议传递给后端WordPress容器,导致WordPress误判自身访问地址为127.0.0.1:8585,进而生成错误的重定向链接。
步骤1:修改Apache虚拟主机配置
在你的<VirtualHost *:443>块中添加请求头配置,把真实的外部访问信息传递给WordPress:
# 传递真实请求的协议、域名和端口 RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-Host "example.com" RequestHeader set X-Forwarded-Port "443" # 保留原有反向代理配置 ProxyPass / http://127.0.0.1:8585/ ProxyPassReverse / http://127.0.0.1:8585/
步骤2:更新WordPress配置
在wp-config.php中补充以下代码,让WordPress信任反向代理的头部信息并强制HTTPS:
define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true); // 识别反向代理传递的HTTPS协议 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } // 保留你之前设置的站点地址 define('WP_HOME','https://example.com'); define('WP_SITEURL','https://example.com');
步骤3:(可选)Docker Compose环境变量配置
如果通过Docker Compose管理WordPress,可直接通过环境变量注入配置,避免手动修改容器内文件:
services: wordpress: image: wordpress:latest environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb WORDPRESS_CONFIG_EXTRA: | define('WP_HOME','https://example.com'); define('WP_SITEURL','https://example.com'); define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true); if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } # 其他端口、卷挂载配置...
验证操作
重启Apache服务和WordPress容器后,访问域名即可正常加载首页,不再重定向到127.0.0.1。
内容的提问来源于stack exchange,提问作者3rKaN_BRATTE
相关产品推荐
相关产品推荐

