You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Nginx+Let's Encrypt+反向代理配置引发无限重定向循环的原因排查

解决Nginx反向代理Resilio Sync时的无限重定向问题

咱们先来拆解你遇到的问题:证书过期后,哪怕注释掉了HTTP转HTTPS的return 301配置,访问站点还是会反复跳转到HTTPS,而Resilio Sync的同步功能正常,说明后端服务本身没毛病,问题大概率出在Nginx配置、浏览器缓存或者后端的重定向逻辑上。

下面是几个最可能的原因和对应的解决步骤:

1. 浏览器缓存了永久重定向(301)

你一开始配置的return 301 https://$server_name$request_uri是永久重定向,浏览器会把这个规则缓存很久——哪怕你后来把这行注释掉了,浏览器依然会自动跳转到HTTPS,这很容易让你误以为问题还在服务器配置上。

解决办法:

  • 打开浏览器开发者工具(按F12),切换到「网络」标签,勾选「禁用缓存」,然后刷新站点试试。
  • 或者直接清掉浏览器的缓存和Cookie,再重新访问。

2. Resilio Sync自身在强制HTTPS重定向

Resilio Sync的Web GUI可能被设置成了强制用HTTPS,当Nginx把HTTPS请求转发到它的HTTP端口(127.0.0.1:8888)时,Resilio Sync会返回一个跳转到HTTPS的响应,而Nginx已经在HTTPS端口处理请求,这不就形成循环了嘛。

验证方法:
在服务器上用curl直接访问Resilio的本地端口,看看响应头里有没有重定向:

curl -I http://127.0.0.1:8888

如果响应里有Location: https://site.example.com/这类内容,那就是Resilio在发重定向。

解决办法:

  • 找到Resilio Sync的配置文件(一般在~/.config/resilio-sync/或者/etc/resilio-sync/目录下的config.json),找到webui部分,把force_https改成false:
    "webui": {
      "listen": "127.0.0.1:8888",
      "force_https": false
    }
    
  • 重启Resilio Sync服务:
    sudo systemctl restart resilio-sync
    

3. 过期SSL证书触发的异常循环

你的SSL证书已经过期了,Nginx处理HTTPS请求时会出问题,有些浏览器会自动尝试降级到HTTP,但又被之前缓存的301重定向拉回HTTPS,一来一回就形成了无限循环。

解决办法:

  • 用Certbot更新证书就行:
    sudo certbot renew --nginx
    
  • 证书更新成功后,记得重启Nginx:
    sudo systemctl restart nginx
    

4. Nginx SSL协议配置的兼容性问题

你的Nginx里ssl_protocols只开了TLSv1.1和TLSv1.2,现在很多现代浏览器都优先用TLSv1.3,缺了这个协议可能导致SSL握手失败,触发浏览器的自动重定向逻辑。

解决办法:
更新ssl_protocols配置,加上TLSv1.3(顺便把已经废弃的TLSv1.1去掉更安全):

ssl_protocols TLSv1.2 TLSv1.3;

排查顺序建议

  1. 先禁用浏览器缓存验证,排除缓存的锅;
  2. 检查Resilio的本地响应,确认是不是后端在发重定向;
  3. 优先更新过期证书——毕竟问题是在证书过期后才出现的,这是最可能的根源;
  4. 最后调整SSL协议配置,确保兼容性。

内容的提问来源于stack exchange,提问作者Mikko Saari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:07:51