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

Nginx反向代理:domain.de出现ERR_TOO_MANY_REDIRECTS错误求助

Nginx反向代理ERR_TOO_MANY_REDIRECTS及502错误排查与解决

问题原因分析

  1. 静态服务与反向代理配置冲突
    domain.de的location /块中同时配置了root+try_files(本地静态文件服务逻辑)和proxy_pass(反向代理逻辑),二者功能冲突。Nginx优先处理try_files后,若触发的/index-one.html请求被反向代理到后端服务,而后端服务又重定向回https://domain.de,就会形成重定向循环,触发ERR_TOO_MANY_REDIRECTS错误。

  2. 后端服务重定向循环
    将proxy_pass改为http://192.168.198.40后,若该地址的80端口服务配置了强制HTTPS重定向,请求会被后端服务再次导向https://domain.de,Nginx收到HTTPS请求后又反向代理到后端,循环往复导致错误。

  3. 502 Bad Gateway原因
    添加端口后出现502,说明Nginx无法连接到目标服务,可能是:

    • 目标端口无服务监听
    • 服务器防火墙/安全组拦截了该端口访问
    • 后端服务未正常运行

解决方法

场景1:domain.de需提供本地静态文件服务

如果需求是直接对外提供/var/www/html/domain.de下的静态文件,删除location /块中所有proxy_pass相关配置,修改后配置如下:

server {
    if ($host = domain.de) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name domain.de;
    return 404;
}

server {
    server_name domain.de;

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /etc/letsencrypt/live/domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.de/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    proxy_buffering off;
    server_tokens off;

    location ^~ /swagger {
        return 404;
    }

    location / {
        root    /var/www/html/domain.de;
        try_files $uri $uri/ /index-one.html ;

        add_header 'Referrer-Policy' 'origin-when-cross-origin';
        add_header Strict-Transport-Security "max-age=15552000; preload" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-XSS-Protection "1; mode=block" always;
    }
}

场景2:domain.de需反向代理到后端服务

如果需要将domain.de流量代理到后端服务:

  1. 删除location /块中的root和try_files配置,消除逻辑冲突。
  2. 修正后端服务重定向逻辑:
    • 关闭后端服务的强制HTTPS重定向,或配置后端服务识别X-Forwarded-Proto头,正确处理HTTPS请求。
  3. 解决502问题:
    • 确认后端服务的IP、端口正确且服务处于运行状态。
    • 配置服务器防火墙允许Nginx访问目标端口,例如执行ufw allow out to 192.168.198.40 port 8096。
    • 在服务器上执行curl http://192.168.198.40:[目标端口],验证连通性。

配置生效步骤

修改配置后,执行以下命令验证并重载配置:

sudo nginx -t  # 检查配置语法正确性
sudo systemctl reload nginx  # 重载Nginx配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:20:25