Nginx反向代理非标准端口WordPress后站点无法正常加载求助
问题根因
- 反向代理配置缺失必要请求头:当前Nginx反向代理未传递
Host和X-Forwarded-Proto请求头,后端WordPress无法识别用户实际访问的域名、协议与端口,触发内置地址校验逻辑执行强制跳转 - 后端Web服务配置异常:部署
wp.webtest.contentdeliver.net:14463的服务器上,监听14463端口的Web服务存在跳转规则,或未正确配置站点域名,导致直接访问14463端口时自动跳转到无端口的443默认站点 - WordPress缓存与重定向规则冲突:修改SiteURL、HomeURL后未清理缓存,或WordPress核心
redirect_canonical钩子校验逻辑和反向代理场景不兼容,触发异常跳转
解决方案
1. 调整前端Nginx反向代理配置
在现有location /配置块中补充2行请求头传递规则,修改后完整配置如下:
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_ssl_server_name on; proxy_connect_timeout 30s; proxy_read_timeout 1800s; proxy_send_timeout 1800s; proxy_pass https://wp.webtest.contentdeliver.net:14463; }
修改完成后执行命令重载Nginx配置生效:nginx -s reload
2. 修复WordPress反向代理适配配置
编辑WordPress站点根目录下的wp-config.php文件,在/* That's all, stop editing! Happy publishing. */行之前加入以下配置:
// 强制固定站点地址 define('WP_HOME', 'https://wp.t.airbook.net.cn'); define('WP_SITEURL', 'https://wp.t.airbook.net.cn'); // 适配反向代理的HTTPS识别 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443; } // 如仍存在跳转问题,可取消下方注释禁用canonical自动重定向 // remove_action('template_redirect', 'redirect_canonical');
3. 排查后端服务跳转规则
登录wp.webtest.contentdeliver.net服务器,检查监听14463端口的Web服务配置:
- 确认该站点无全局301/302跳转规则指向不带端口的
wp.webtest.contentdeliver.net - 清理WordPress全量缓存(页面缓存、插件缓存、对象缓存),必要时重启后端Web服务
4. 验证修复效果
清理本地浏览器缓存后,分别验证前端站点前台、后端地址访问逻辑是否符合预期。如不需要直接对外暴露后端14463端口,建议配置防火墙仅允许反向代理服务器IP访问该端口。
内容的提问来源于stack exchange,提问作者Daniel Taka
相关产品推荐
相关产品推荐

