Nginx反向代理+WordPress多VPS部署遭遇Too Many Redirects问题求助
Nginx反向代理+WordPress多VPS部署遭遇Too Many Redirects问题求助
Hi Michele,碰到这种重定向循环的问题确实头疼,不过结合你的部署架构——Proxmox管理多VPS跑独立WordPress、Nginx反向代理做HTTPS统一入口、Fortinet防火墙做端口转发——大概率是反向代理和WordPress之间的协议识别或者重定向规则冲突导致的,我给你梳理几个排查方向和解决办法:
先对齐你的问题现象
- ✅ 后端VPS本地HTTP访问WordPress正常
- ✅ 反向代理服务器用curl访问后端VPS站点正常
- ✅ 本地网络直接访问VPS IP正常
- ❌ 外部通过域名访问时触发Too Many Redirects错误
核心排查与解决步骤
1. 让WordPress正确识别反向代理的HTTPS请求
这是最常见的原因:反向代理已经把HTTPS请求转成HTTP发给后端WordPress了,但WordPress不知道这是来自外部的HTTPS请求,生成的链接还是HTTP,反向代理又把HTTP请求重定向回HTTPS,循环就这么来的。
解决办法:
- 登录后端WordPress所在VPS,编辑
wp-config.php文件,添加以下代码:
// 强制后台使用HTTPS define('FORCE_SSL_ADMIN', true); // 识别来自反向代理的HTTPS请求 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443; }
- 同时检查反向代理的Nginx配置,确保转发请求时带上必要的头部,在对应域名的server块里添加:
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://你的后端VPSIP;
2. 检查重定向规则是否双向冲突
如果反向代理已经配置了80转443的强制HTTPS重定向,而后端WordPress也开启了强制HTTPS,就会出现双向重定向循环。
- 先看反向代理的80端口配置,是否有这样的规则:
server { listen 80; server_name your-domain.com; # 把所有HTTP请求重定向到HTTPS return 301 https://$host$request_uri; }
- 如果反向代理已经做了这个,那可以暂时关闭WordPress后台的“强制HTTPS”选项(或者通过
wp-config.php的FORCE_SSL_ADMIN只保留后台HTTPS),避免两边都强制重定向。
3. 检查WordPress的站点URL设置
通过VPS本地访问WordPress后台,进入设置->常规,确认:
- WordPress地址(URL) 和 站点地址(URL) 都是
https://your-domain.com - 不要设置成IP地址或者HTTP协议,否则生成的链接会和反向代理的HTTPS要求冲突
4. 清除浏览器缓存试试
有时候浏览器缓存了旧的重定向记录,即使你修复了配置,还是会触发循环。试试用隐私模式访问,或者清除浏览器的缓存和Cookie,再测试。
测试验证
完成上面的配置后,先在反向代理服务器上用curl -I https://your-domain.com检查响应头,看是否返回200或者正确的单次重定向;再用浏览器正常访问测试。
备注:内容来源于stack exchange,提问作者Michele
相关产品推荐
相关产品推荐

