Nginx反向代理Apache上的WordPress跳转127.0.0.1:8083问题
问题根因
访问跳转到127.0.0.1:8083的核心原因是当前Nginx反向代理配置缺失必要的请求头传递规则:
- 后端Apache接收到的请求Host字段默认是代理目标地址
127.0.0.1:8083,无法感知前端对外服务的真实域名和协议 - WordPress会根据后端收到的请求信息生成页面链接、重定向地址,拿到错误的Host信息后就会生成带后端端口的跳转地址,直接返回给用户浏览器
修复方案
1. 更新Nginx配置
替换原有443端口server块中的location /配置,补全代理头规则,完整配置参考如下:
server { listen *:443 ssl; server_name www.dhahbya.com dhahbya.com; ssl_certificate ****************; ssl_certificate_key **************; location / { proxy_pass http://127.0.0.1:8083; # 传递原始请求的域名、客户端IP、协议信息给后端 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_redirect off; } } server { listen 80; server_name *.dhahbya.com; return 301 https://$host$request_uri; }
配置修改完成后,先执行配置校验,校验通过后重载Nginx生效:
nginx -t && systemctl reload nginx
2. 调整WordPress配置适配反向代理
编辑WordPress根目录下的wp-config.php文件,在/* That's all, stop editing! Happy publishing. */注释行之前添加如下代码,让WordPress正确识别前端HTTPS协议,避免出现HTTP/HTTPS循环跳转问题:
// 识别反向代理传递的HTTPS标识 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; }
同时登录WordPress后台,在「常规设置」页面确认*WordPress地址(URL)和站点地址(URL)*两项均配置为https://dhahbya.com,不要填写127.0.0.1、带8083端口的本地地址。
配置完成后清理浏览器缓存、WordPress站点缓存重新访问即可恢复正常。
内容的提问来源于stack exchange,提问作者Maher Ben Taleb Ali
相关产品推荐
相关产品推荐

