Então, eu estou configurando um caminho virtual ao apontar para um aplicativo node.js. no meu nginx conf. a seção relevante é assim:
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Funciona muito bem, exceto quando meu aplicativo node.js. (um aplicativo expresso) chama um redirecionamento.
Como um exemplo, a caixa dev está executando o nginx na porta 8080 e, portanto, os URLs para a raiz do aplicativo do nó se parecem com:
http: // localhost: 8080 / app
Quando chamo um redirecionamento para '/ app' a partir do nó, o redirecionamento real vai para:
Respostas:
O problema é que o aplicativo Node.js. não está emitindo o redirecionamento corretamente. Você pode usar isso
proxy_redirect
para corrigir isso no nginx:fonte
Eu apenas tive que resolver o mesmo problema com Jenkins correndo atrás do nginx. O que fiz para mim foi incluir a porta do servidor no
Host
cabeçalho que está sendo enviado para Jenkins:Espero que ajude.
fonte
Tentei as soluções acima, mas todas elas falhavam sempre que o aplicativo do nó emitia uma URL totalmente qualificada no cabeçalho do local, como " http://nodeapp.com:8080/new/location "
Então acabei usando o $ http_host para passar o host e a porta. E usando uma correspondência para reescrever os URLs inteiramente.
No nosso caso, o servidor Node está sendo executado no 8080 e nosso proxy nginx está sendo executado no 8000. Isso significa que todo URL completo no cabeçalho de um local precisa ser reescrito. Espero que isso ajude alguém !!
fonte
De acordo com a conversa sobre essa questão , a resolução correta é ajustar a
Host
diretiva de cabeçalho do proxy .Mude isso:
Para isso:
$http_host
mantém o valor especificado no cabeçalho HTTP HOST, que inclui a porta. Os redirecionamentos devem selecionar a porta personalizada sem personalização adicional para a configuração do OP.Essas respostas (o mesmo ticket) são mais elaboradas:
fonte