WordPress接入宝塔Nginx反向代理或CDN后出现无限重定向,常见原因是HTTPS识别、站点URL、Host头和缓存规则冲突。本文给出安全排查与验证顺序。
WordPress接入CDN或反向代理后循环跳转,通常是外层已经使用HTTPS,而源站或PHP仍把请求识别为HTTP;也可能是WordPress站点URL、Nginx跳转和插件各自执行一次重定向。先记录完整Location链,再统一外部协议、Host和站点URL,只保留一套明确的HTTPS策略。

先给结论
WordPress接入CDN或反向代理后循环跳转,通常是外层已经使用HTTPS,而源站或PHP仍把请求识别为HTTP;也可能是WordPress站点URL、Nginx跳转和插件各自执行一次重定向。先记录完整Location链,再统一外部协议、Host和站点URL,只保留一套明确的HTTPS策略。
先画出真实请求链
跨境博客常见链路是浏览器到CDN,再到宝塔Nginx,最后进入PHP-FPM和WordPress。每一层都可能根据自己看到的协议与域名发送301或302。浏览器只显示“重定向过多”,无法说明是哪一层。使用curl保存每一跳的状态码和Location,观察是否在http与https、www与裸域名、登录页与后台之间来回切换。
测试时暂时绕开浏览器缓存与Cookie,并分别检查首页和`wp-login.php`。不要立即清空数据库或重装WordPress;先确定循环的两个地址和响应服务器。
可以先执行的只读检查
查看完整跳转链
curl -I -L --max-redirs 10 https://example.com/
curl -I https://example.com/wp-login.php命令只读取当前状态;请替换示例域名、端口或容器名,并结合故障时间验证输出。
核对关键响应头
curl -sS -D - -o /dev/null https://example.com/ | grep -Ei '^(HTTP|location:|server:|via:|x-cache:)'命令只读取当前状态;请替换示例域名、端口或容器名,并结合故障时间验证输出。
HTTPS为什么在代理后被误判
TLS如果终止在CDN或反向代理,源站收到的可能是HTTP回源。若代理没有正确传递`X-Forwarded-Proto`,或者PHP没有把可信的https值映射为`$_SERVER[HTTPS]`,WordPress会认为当前请求不安全并再次跳转。外层随后又把HTTP导向HTTPS,就形成循环。
WordPress官方文档给出了反向代理后的HTTPS识别方式,但前提是头部由受信任代理设置。不能无条件信任公网客户端提交的转发头,否则可能影响URL生成和安全判断。源站应只允许CDN或代理回源,并在受控位置设置Host、真实IP和协议头。
站点URL和多层跳转冲突
检查`WP_HOME`、`WP_SITEURL`以及数据库中的home和siteurl是否使用最终正式域名与https。搬站后如果数据库仍保存旧域名,插件、后台和静态资源会继续生成旧链接。Nginx的强制HTTPS、CDN的重定向规则、WordPress插件和应用代码不要同时维护不同目标。
建议确定唯一规范:是否使用www、是否强制HTTPS、后台是否单独策略。让最外层完成域名与协议规范化,应用只理解传入的可信协议信息。任何修改先备份`wp-config.php`和数据库相关值。
缓存与登录循环
CDN和页面缓存不应缓存`wp-login.php`、`wp-admin`及带登录Cookie的响应。若301、302或未登录页面被错误缓存,配置修复后仍可能看到旧循环。按URL和Cookie设置绕过规则,再分别清理CDN、Nginx、缓存插件和浏览器缓存。
清缓存不是根因修复。应先改正确配置,再清对应层缓存并复测。测试命中状态、Set-Cookie和Location,确认匿名首页可缓存而登录与后台请求不被共享。
上线前的验证清单
从不同网络测试裸域名、www、HTTP、HTTPS、首页、文章、登录和后台,所有入口应在有限跳转后到达唯一规范地址。检查静态资源没有Mixed Content,后台Cookie为Secure,表单提交后不会跳回登录。
源站直连测试要带正确Host,避免把默认站点结果当成WordPress结果。最后保存代理头配置、规范域名、缓存例外和证书续期方式,避免更换CDN或回源协议后再次出现循环。
上线或恢复前检查
- 完整Location链已经记录
- 外部协议与WordPress识别一致
- 站点URL和规范域名唯一
- 登录后台和缓存例外均已验证
涉及生产数据、网络入口、磁盘或远程路由时,必须先备份并保留控制台回退通道。平台界面、软件版本和策略可能变化,实际操作以当前官方文档与控制台提示为准。
相关阅读
官方资料
- WordPress HTTPS behind a reverse proxy(WordPress)
- WordPress installation FAQ: reverse proxy(WordPress)
- WordPress login and redirect troubleshooting(WordPress)

