Nginx 配置错误导致 TOO_MANY_REDIRECTS 的排查方法

TOO_MANY_REDIRECTS(过多重定向)是网站常见错误。这个问题会影响用户访问和 SEO 收录。本文会讲解 Nginx 配置错误导致 TOO_MANY_REDIRECTS 的排查思路与解决方案。

20250705140906913-image

1. TOO_MANY_REDIRECTS 错误原理

浏览器访问网站时,如果服务器配置了错误的重定向规则,导致请求在多个 URL 之间无限跳转(例如 HTTP 与 HTTPS、带 www 与不带 www 之间相互跳转),最终浏览器为防止死循环,返回 TOO_MANY_REDIRECTS 错误。

常见表现:

  • 页面加载失败,提示 ERR_TOO_MANY_REDIRECTS
  • F12 开发者工具 Network 面板显示重复的 301 或 302 重定向

2. 排查前的准备

在排查前,先确认以下信息:

  • 网站使用的域名(是否有 www 与非 www 混用)
  • 是否配置了 SSL(HTTPS)
  • 是否使用了 CDN 或反向代理(如 Cloudflare)

3. Nginx 配置导致重定向错误的常见原因

3.1 HTTP 与 HTTPS 配置冲突

如果同时配置了 HTTP 自动跳转 HTTPS,而 HTTPS 配置又跳回 HTTP,会形成无限循环。

20250705141336307-image

典型错误示例:

server {
    listen 80;
    server_name example.com;
    return 301 http://example.com$request_uri; # 错误:跳转到 http
}

server {
    listen 443 ssl;
    server_name example.com;
    return 301 https://example.com$request_uri;
}

此配置将 HTTP 请求重定向到 HTTP(自身),HTTPS 请求重定向到 HTTPS(自身),没有完成预期的 HTTP -> HTTPS 跳转。

3.2 www 与非 www 重定向配置错误

当 www 与非 www 互相跳转时,也会产生 TOO_MANY_REDIRECTS。

错误配置示例:

server {
    server_name example.com;
    return 301 http://www.example.com$request_uri;
}

server {
    server_name www.example.com;
    return 301 http://example.com$request_uri;
}

此配置会导致:

  • 访问 example.com 跳到 www.example.com
  • 访问 www.example.com 又跳回 example.com
  • 无限循环

3.3 反向代理与 HTTPS 配置冲突

用了 Cloudflare、宝塔反向代理或 CDN 后,如果没配好 X-Forwarded-Proto 这个参数,Nginx 可能会认错网址协议(把 HTTPS 当成 HTTP),导致页面跳转出错。

解决方法:

在配置文件中添加:

配置文件通常在以下位置之一:

  • nginx / 打开 nginx.conf (主配置文件,不建议直接编辑 server 块)
20250705142500980-image
server {
    listen 80;
    server_name example.com www.example.com;

    set $https_off "";
    if ($http_x_forwarded_proto != "https") {
        set $https_off "redirect";
    }
    if ($https_off = "redirect") {
        return 301 https://$host$request_uri;
    }
}

或使用标准方式:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

在 HTTPS 配置中加入:

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    # 配置 SSL 证书...
}

同时在 Nginx 全局配置 fastcgi_params 文件或 server 段内添加:

fastcgi_param HTTPS on;

确保反向代理传递了 HTTPS 信息。

4. 系统排查流程

下面是排查 TOO_MANY_REDIRECTS 的推荐步骤:

  • 检查浏览器 Network 面板
    查看跳转链路,确认是 HTTP 与 HTTPS 之间循环,还是 www 与非 www 之间循环。
  • 查看 Nginx 配置文件
    • 是否存在多个 server_name 重复配置
    • 是否 return 301 指向了相同域名导致循环
  • 确认反向代理配置 如果使用了 Cloudflare,确认 “SSL/TLS 模式” 选择了 Full (strict),避免 Flexible 模式造成循环。
  • 查看 WordPress 或其他 CMS 设置 若网站 URL 设置为 HTTP,但服务器配置了强制 HTTPS,也可能导致重复跳转。
20250705175605861-image
  • 清除浏览器与 CDN 缓存 有时配置已修改,但缓存没有更新,还是显示旧的错误。

总结

TOO_MANY_REDIRECTS 是 Nginx 配置中常见问题,关键是 避免重定向循环。检查 HTTP 与 HTTPS、www 与非 www 配置,结合 Web 服务器、CDN 和应用设置排查,可以解决这类错误。


了解 宝藏号 的更多信息

订阅后即可通过电子邮件收到最新文章。

© 版权声明

相关文章

暂无评论

none
暂无评论...

了解 宝藏号 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读