WordPress 配置 CloudFlare 后遇到无限重定向问题的解决方案
Contents
最近在折腾 WordPress 的时候遇到了一个有意思的问题。在开启了 CloudFlare 的 CDN 并启用了小云朵后,网站就开始疯狂重定向,最后直接被浏览器拦截了。经过一番摸索,终于找到了问题所在,在这里分享给大家。
问题分析
事情是这样的:开启 CloudFlare 的小云朵后,用户的访问路径变成了这样:
用户浏览器 (HTTPS) => CloudFlare => 源服务器 (HTTP) => WordPress
看出问题了吗?
由于我使用了 CloudFlare 的 Flexible
SSL 模式,且在wordpress站点URL里面配置的是 https 协议但源站服务器上并没有配置 SSL 证书,CloudFlare 到源站的连接是使用 HTTP 的。
这时候 WordPress 检测到回源走的是 http协议, 它就不乐意了:“咋回事?怎么用 HTTP 访问我?这和说好的不一样啊!” 于是它执着地要给访客跳转到 HTTPS。结果可想而知 - 无限重定向循环。
解决方案
其实解决起来很简单,只需要在 Nginx 配置中动点小手脚,让 WordPress 以为从 CloudFlare 来的 HTTP 请求其实是 HTTPS 的就行了。具体配置如下:
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 让 PHP 识别请求是 HTTPS, cloudflare Flexible模式
fastcgi_param HTTPS on;
include fastcgi_params;
}
配置完后重载 Nginx,问题就解决了。这样一来,WordPress 就会认为所有请求都是通过 HTTPS 发起的,不会再触发重定向了。