Não defina proxy_redirect
para off
, isso não está fazendo o que você acha que está fazendo. proxy_redirect
realiza algo semelhante à regravação de URL, por exemplo:
location /sales/ {
proxy_pass http://ip_of_the_app:7180/;
proxy_redirect http://ip_of_the_app:7180/ http://$host/sales/;
}
Isso permite que você hospede o caminho /sales/
em outro lugar. Mas, mesmo assim, os parâmetros padrão para proxy_redirect
fazem exatamente isso para você de graça. O padrão é redirecionar o local para o que estiver presente em proxy_pass
(e os parâmetros padrão são usados quando você não define proxy_redirect
ou usa proxy_redirect default;
).
Você não precisa definir proxy_redirect
.
O que você está perdendo são cabeçalhos que precisam ser enviados para o aplicativo. O mais importante deles é HOST
. Isso deve executar o proxy conforme desejado e manter o URL correto no navegador.
location / {
proxy_pass http://ip_of_the_app:7180/;
proxy_set_header HOST $host;
}
Observe que o aplicativo em http://ip_of_the_app:7180/
agora receberá a solicitação com o cabeçalho Host: my-app.net
.
Você também deve considerar usar mais alguns cabeçalhos:
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
Isso permitirá um registro melhor dentro do aplicativo em http://ip_of_the_app:7180/
. X-Forwarded-For
fornecendo o IP do cliente real (em oposição a nginx
s IP) e X-Forwarded-Proto
para verificar se o cliente está conectado ao nginx
por meio de HTTP ou HTTPS.