使用 proxy_pass 进行简单设置时,Nginx 出现 ERR_TOO_MANY_REDIRECTS

使用 proxy_pass 进行简单设置时,Nginx 出现 ERR_TOO_MANY_REDIRECTS

让我直接进入正题。以下是我的设置,域名已更改:

upstream nodejs {
    server 127.0.0.1:8081;
    keepalive 256;
}

# Redirect all non-HTTPS to non-WWW HTTPS
server {
    listen 8080;
    server_name "~^(?:www\.)?(.*)$";
    return 301 https://$host$request_uri;
}

# Redirect WWW HTTP to non-WWW HTTP
server {
    listen 4430;
    server_name "~^www\.(.*)$";
    return 301 https://$1$request_uri;
}

# Reverse-proxy to http://nodejs
server {
    listen 4430;
    server_name "~^(?!www\.).*$";

    client_max_body_size 50M;

    location / {
        proxy_pass http://webflow.test.co;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }

    location ~ /(?<all>.+) {
        proxy_pass http://nodejs;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

基本上,这还没有完成,但是一个基本的测试,我要做的所有事情就是将主页重定向到我们的新域名,并将webflow.test.co其他所有内容重定向到 NodeJS 服务器。如果我将位置 / 更改proxy_set_header Hostwebflow.test.co,则此操作可以正常工作,但如果我将其设置为$host,则会出现 ERR_TOO_MANY_REDIRECTS 失败,这显然是保留 URL 所必需的。如果我手动将标题设置Host为 ,它也会失败test.co

如果您需要任何其他信息,请告诉我 - 我非常接近解决这个旷日持久的问题,我会接受第一个可行的合理答案!

相关内容