Estou usando nginx
como proxy reverso e, quando faço login na minha interface da Web, sou redirecionado para o URL em proxy. Eu gostaria de evitá-lo e sempre manter o "server_name" como a URL. É possível?
Este é o meu /etc/nginx/conf.d/my_app.conf
:
server {
listen 443 ssl;
server_name my-app.net;
ssl_certificate /etc/pki/tls/certs/my-app.cer;
ssl_certificate_key /etc/pki/tls/private/my-app.key;
ssl_protocols TLSv1.1 TLSv1.2;
access_log /var/log/nginx/my-app.access.log main;
location / {
proxy_pass http://ip_of_the_app:7180/;
proxy_redirect off;
}
}
Eu me conecto http://my-app.net
, insiro as informações de login, sou redirecionado para http://ip_of_the_app:7180
a mesma página de login e preciso fazer login novamente. Esse login duplo pode ser evitado?
linux
nginx
reverse-proxy
tonio94
fonte
fonte
Respostas:
Não defina
proxy_redirect
comooff
, isso não está fazendo o que você pensa que está fazendo.proxy_redirect
executa algo semelhante à reescrita de URL, por exemplo:Isso permite que você hospede o
/sales/
caminho em outro lugar. Mas, mesmo assim, os parâmetros padrão paraproxy_redirect
fazer exatamente isso de graça. O padrão é redirecionar o local para o que estiver presenteproxy_pass
(e os parâmetros padrão são usados quando você não defineproxy_redirect
nem usaproxy_redirect default;
).Você não precisa definir
proxy_redirect
.O que você está perdendo são os cabeçalhos que precisam ser enviados ao aplicativo. O mais importante deles é
HOST
. Isso deve executar o proxy conforme desejado e manter o URL correto no navegador.Observe que o aplicativo em
http://ip_of_the_app:7180/
agora receberá a solicitação com oHost: my-app.net
cabeçalho.Você também deve considerar usar mais alguns cabeçalhos:
Isso permitirá um melhor registro dentro do aplicativo em
http://ip_of_the_app:7180/
.X-Forwarded-For
fornecendo o IP do cliente real (em oposição aonginx
IP s) eX-Forwarded-Proto
verificar se o cliente se conectou aonginx
HTTP ou HTTPS através de.fonte
Referer
é simplesmente o$http_referer
que o copia da solicitação. Isso não funciona se a solicitação não tiver um cabeçalho Referer, portanto, a codificação é uma solução em alguns casos.