ERR_TOO_MANY_REDIRECTS是因宝塔force_https规则与CDN的HTTPS策略叠加导致重定向环路,需删除Nginx中return 301 https规则、统一由CDN接管HTTPS并关闭宝塔强制HTTPS开关。

宝塔面板开启强制HTTPS后出现ERR_TOO_MANY_REDIRECTS
这是典型的重定向环路,根本原因是宝塔的 force_https 规则与CDN(如Cloudflare、腾讯云CDN)的HTTPS策略叠加生效。宝塔在Nginx配置中插入了 return 301 https://$host$request_uri;,而CDN本身已将HTTP请求转为HTTPS再发往源站——结果源站又再次301跳回HTTPS,形成死循环。
实操建议:
- 登录宝塔 → 网站 → 对应域名 → 配置文件,搜索并删除或注释掉包含
return 301 https的整行(通常在server块的80端口监听段内) - 确认CDN控制台已开启「强制HTTPS」或「始终使用HTTPS」,且源站协议设为
HTTPS或HTTP(非「跟随」) - 若CDN设置的是「HTTP回源」,但宝塔又开了强制HTTPS,必然触发两次跳转——此时应统一由CDN接管HTTPS,源站保持HTTP即可
如何判断是宝塔还是CDN在发起301跳转
用 curl -I 直连服务器IP(绕过CDN),对比CDN域名响应头,能快速定位源头:
curl -I http://your-domain.com
若直连IP返回 301 Moved Permanently → 宝塔配置问题;若仅CDN域名返回301 → CDN策略冲突。
注意:$host 在Nginx中默认不带端口,但CDN回源时可能携带 :443,导致 $host 解析异常,加剧跳转逻辑错乱。建议在宝塔配置中显式写死跳转域名,例如:
return 301 https://your-domain.com$request_uri;
而非依赖 $host。
宝塔后台「强制HTTPS」开关与真实配置不一致
宝塔界面勾选「强制HTTPS」后,会在配置中插入跳转规则;但手动修改配置文件后,界面开关状态不会自动同步——下次点「保存」,宝塔可能重新注入旧规则,覆盖你的修改。
避免方式:
- 关闭宝塔后台的「强制HTTPS」开关(网站 → 设置 → SSL → 关闭「强制HTTPS」)
- 改用「反向代理」或「自定义配置」添加跳转逻辑,确保可控
- 若必须用宝塔管理,每次保存前先备份配置,并检查是否新增了重复的
return 301
CDN回源协议选「HTTP」却要求源站证书校验失败
部分CDN(如阿里云全站加速)在「HTTP回源」模式下,仍会校验源站SSL证书有效性,导致502或连接中断——这不是跳转问题,但常被误判为重定向异常。
验证方法:在CDN控制台临时切换回源协议为 HTTP,同时在宝塔中禁用所有HTTPS相关配置(包括SSL证书绑定),观察是否仍报错。
解决路径:
- 源站不配SSL证书 → CDN回源协议必须为
HTTP,且CDN需关闭「回源证书校验」(如有该选项) - 源站配了SSL → 回源协议应为
HTTPS,但此时宝塔不能再对80端口做301跳转,否则又进环路 - 最稳方案:CDN开「强制HTTPS」+「HTTP回源」,宝塔完全不处理80跳转,只在443端口正常提供服务
真正麻烦的不是配置项多,而是宝塔的「强制HTTPS」和CDN的「自动HTTPS」都默认开启且互不可见。改完一处,得立刻用 curl -I 验证响应头,不然你以为修好了,其实只是跳转次数从20次降到了19次。










