Nginx ERR_TOO_MANY_REDIRECTS ao usar proxy_pass com uma configuração simples

1

Deixe-me entrar direto nisso. Aqui está minha configuração, com os nomes de domínio alterados:

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;
    }
}

Basicamente, e isso ainda não está feito, mas um teste básico, tudo o que estou tentando fazer é redirecionar a página inicial para o novo domínio em webflow.test.co e tudo mais para o servidor NodeJS. Isso funciona bem se eu alterar o local / proxy_set_header Host para webflow.test.co , mas falhar com ERR_TOO_MANY_REDIRECTS se eu configurá-lo como $host , o que obviamente é necessário para preservar a URL. Ele também falhará se eu definir manualmente o cabeçalho Host para test.co .

Deixe-me saber se você precisa de alguma informação adicional - estou tão perto de resolver este problema, e aceito a primeira resposta sensata que funciona!

    
por Ryan Spicer 01.09.2017 / 21:19

0 respostas

Tags