Docker部署的WordPress使用反向代理时无法安装插件/更新问题求助
问题原因
- 反向代理未向WordPress容器传递正确的请求头(
X-Forwarded-Proto、X-Forwarded-Host、X-Forwarded-Port等),导致WordPress无法识别站点实际的访问协议、域名和端口,内部HTTP请求校验逻辑异常,无法和WordPress.org建立正常HTTPS连接。 - WordPress默认不信任反向代理传递的转发头,不会根据头信息调整自身运行配置,进一步导致对外请求的校验失败。
解决方法
步骤1:调整反向代理配置,传递完整请求头
Nginx反向代理配置
在对应站点的location配置块中添加以下参数:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port;
配置完成后执行nginx -s reload重载配置。
Apache反向代理配置
在对应虚拟主机配置中添加以下参数:
ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https" env=HTTPS RequestHeader set X-Forwarded-Port "%{SERVER_PORT}s" RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
配置完成后执行对应Apache重载命令生效。
步骤2:配置WordPress信任反向代理头
你可以任选以下一种方式配置:
方式1:修改wp-config.php配置文件
编辑宿主机挂载路径下的/sites/wp/wp-config.php文件,在/* That's all, stop editing! Happy publishing. */代码行前添加以下内容:
// 适配反向代理HTTPS配置 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = $_SERVER['HTTP_X_FORWARDED_PORT']; } // 固定站点访问地址,可直接替换为你的实际访问域名 define('WP_HOME', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']); define('WP_SITEURL', WP_HOME);
保存后直接生效,无需重启容器。
方式2:修改Docker Compose配置
在你原有docker-compose.yml的wordpress.services.environment字段下新增以下配置:
WORDPRESS_CONFIG_EXTRA: | define('WP_HOME', 'https://替换为你的实际访问域名'); define('WP_SITEURL', 'https://替换为你的实际访问域名'); if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443; }
修改完成后执行docker compose up -d重启容器生效。
步骤3:验证功能
清理浏览器缓存和WordPress站点缓存后,重新通过反向代理地址访问后台,尝试安装插件/主题即可恢复正常。
如果仍然报错,可以进入容器执行网络连通性测试:docker exec -it <你的WordPress容器名> curl -v https://api.wordpress.org,如果请求不通,可在docker-compose.yml的wordpress服务下新增dns: 223.5.5.5配置,修复容器DNS解析问题。
内容的提问来源于stack exchange,提问作者stocton12
相关产品推荐
相关产品推荐

