cloudflare无限循环

2026-08-28 17:00:00

浏览器里最常见的就是ERR_TOO_MANY_REDIRECTS或者“页面无法正常重定向”的报错。本质上就是网站服务器和Cloudflare之间因为配置“打架”,互相踢皮球——一个说“用HTTP”,另一个说“不行,必须用HTTPS”,来回倒腾,最后把浏览器搞崩溃了。

🧠 最常见的“案发现场”:SSL/TLS加密模式设错了

这是导致无限循环的头号元凶。Cloudflare的SSL/TLS加密模式有几种,如果跟源服务器的设置冲突,就会出问题。

场景一:Flexible模式遇上了强制HTTPS

Cloudflare的Flexible模式意味着它用HTTP协议连接你的源服务器。但如果你的源服务器(比如Nginx、Apache)设置了强制跳转HTTPS,那就会形成一个死循环:

  • 用户访问HTTPS → Cloudflare用HTTP请求源服务器 → 源服务器说“必须用HTTPS” → 跳转回HTTPS → 再来一遍……

怎么解决? 要么关掉源服务器的HTTPS强制跳转,要么把Cloudflare的加密模式改成Full或Full (strict)。

场景二:Full模式遇上了强制HTTP

反过来,如果Cloudflare设为Full模式(用HTTPS连接源服务器),但源服务器又把所有HTTPS请求强制重定向到HTTP,同样会无限循环。

怎么解决? 在源服务器上把HTTP强制跳转关掉。

⚙️ 其他容易踩坑的设置

除了SSL模式,还有几个设置也经常“惹祸”:

“Always Use HTTPS”功能:这个功能会让Cloudflare把所有HTTP请求都变成HTTPS。如果源服务器又强制把HTTPS转回HTTP,那就又掐起来了。

WordPress站点常见问题:有用户在Cloudflare社区反馈,启用Cloudflare后WordPress站点陷入SSL重定向循环。社区专家的建议很直接——既然源服务器已经有有效的SSL证书且HTTPS正常工作,直接把Cloudflare的SSL/TLS加密模式设为Full (strict)就能解决。

子域名也中招:有用户在Cloudflare社区反映,开启代理后所有子域名都陷入301无限重定向循环,关掉代理就恢复正常。解决方案同样是把SSL/TLS设置改为“Full (strict)”。

🕵️‍♂️ 进阶场景:Cloudflare Workers导致的循环

如果用了Cloudflare Workers这种更高级的功能,也可能因为代码逻辑触发无限重定向。

核心原因是:Worker把源站返回的重定向响应(301/302等)直接返回给了客户端。如果重定向目标还是同一个Worker域名,新请求会再次触发Worker,Worker又去源站拿到相同的重定向响应,循环往复。

怎么解决? 在Worker代码里,把源站返回的相对路径重定向(比如/new-page)转为绝对路径(比如https://你的域名/new-page)。这样浏览器就不会反复请求同一个Worker域名,循环就破了。

🧑‍💻 作为访客:被“人机验证”循环卡住了怎么办?

有时候不是站长配置问题,而是作为访客被Cloudflare的“Verify You are Human”验证页面卡住了。点了验证框后无限循环,就是进不去。

这通常是因为广告拦截插件(如uBlock Origin、Ghostery)屏蔽了Cloudflare的验证脚本。或者浏览器缓存里残留了旧的Cloudflare Cookies。

怎么解决? 关掉广告拦截插件、换个网络(比如关掉WiFi用手机流量)、清除浏览器里跟“Cloudflare”相关的Cookies。

✅ 几个可以马上做的事

如果网站突然打不开了,按这个顺序排查:

  • 第一步:检查SSL/TLS加密模式。登录Cloudflare后台,看SSL/TLS设置是不是跟源服务器的强制跳转方向一致。大多数情况下,设为“Full (strict)”都能解决问题。

  • 第二步:检查“Always Use HTTPS”。如果开启了,确保源服务器没有把HTTPS再强制转回HTTP。

  • 第三步:清空Cloudflare缓存。有时候旧的缓存配置也会导致问题。

  • 第四步:检查WordPress设置。如果用的是WordPress,确保站点地址(Site URL)跟WordPress地址(WordPress Address)都是HTTPS开头的。

  • 第五步:检查Worker代码。如果用了Worker,检查代码里有没有处理重定向的逻辑,避免相对路径重定向造成循环。

Cloudflare无限循环这事儿,说白了就是配置“打架”——服务器和Cloudflare在HTTP和HTTPS之间来回拉扯。

1 of 6