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

如何解决Nginx的ERR_TOO_MANY_REDIRECTS重定向过多错误?

修复Nginx ERR_TOO_MANY_REDIRECTS重定向循环问题

你的Nginx配置存在两个关键问题,直接导致了重定向循环:

  1. 监听443端口(HTTPS)的server块里,错误添加了return 301 https://$host$request_uri;——HTTPS请求进来后会被再次重定向到HTTPS,形成无限循环。
  2. 两个server块都重复设置server_name,Nginx只会生效最后一个,冗余配置容易引发规则冲突。

修正后的完整配置

# 处理HTTP请求,统一重定向到HTTPS
server {
    listen 80;
    listen [::]:80;

    server_name mydomain.net www.mydomain.net;

    # 将所有HTTP请求转至HTTPS
    return 301 https://$host$request_uri;
}

# 处理HTTPS请求,提供实际服务
server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;

    server_name mydomain.net www.mydomain.net;

    # 保留Certbot自动生成的SSL配置
    ssl_certificate /etc/letsencrypt/live/mydomain.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.net/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # 这里添加你的业务配置,比如静态文件路径或反向代理
    # 示例:root /var/www/mydomain;
    # index index.html;
}

操作步骤

  • 先备份原配置:cp /etc/nginx/sites-available/your-config-file /etc/nginx/sites-available/your-config-file.bak
  • 替换为上面的修正配置
  • 检查配置语法是否正确:nginx -t
  • 重启Nginx生效:systemctl restart nginx

配置说明

  • 拆分HTTP和HTTPS的server块,职责明确:80端口只做HTTP转HTTPS的重定向,443端口处理实际HTTPS请求,彻底避免自循环。
  • 移除冗余的server_name设置和无效if判断,消除Certbot生成的冗余规则干扰。
  • 保留SSL相关配置,确保证书正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:50:02