Lo estoy usando nginxcomo proxy inverso y cuando inicio sesión en mi interfaz web, se me redirige a la URL proxy. Me gustaría evitarlo y mantener siempre el "nombre_servidor" como URL. ¿Es posible?
Este es mi /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;
}
}
Me conecto http://my-app.net, ingreso la información de inicio de sesión, luego me redirigen a http://ip_of_the_app:7180la misma página de inicio de sesión y tengo que iniciar sesión nuevamente. ¿Se puede evitar este doble inicio de sesión?
linux
nginx
reverse-proxy
tonio94
fuente
fuente

Respuestas:
No ajuste
proxy_redirectaoff, que no está haciendo lo que cree que está haciendo.proxy_redirectrealiza algo similar a la reescritura de URL, por ejemplo:Esto le permite alojar la
/sales/ruta en otro lugar. Pero incluso entonces, los parámetros predeterminados paraproxy_redirecthacer exactamente eso por usted de forma gratuita. El valor predeterminado es redirigir la ubicación a lo que sea que esté presenteproxy_pass(y los parámetros predeterminados se usan cuando no se configuraproxy_redirecto no se usaproxy_redirect default;).No es necesario configurar
proxy_redirect.Lo que falta son los encabezados que deben enviarse a la aplicación. El más importante de ellos es
HOST. Esto realizará el proxy como se desee y mantendrá la URL correcta en el navegador.Tenga en cuenta que la aplicación
http://ip_of_the_app:7180/ahora recibirá la solicitud con elHost: my-app.netencabezado.También debe considerar usar un par de encabezados más:
Esto permitirá un mejor inicio de sesión dentro de la aplicación en
http://ip_of_the_app:7180/.X-Forwarded-Fordando la IP del cliente real (en oposición anginxla IP de s) yX-Forwarded-Protoverificar si el cliente se conectó anginxtravés de HTTP o HTTPS.fuente
Refereres simplemente el$http_refererque lo copia de la solicitud. Eso no funciona si la solicitud no tiene un encabezado Referer, por lo que codificarlo es una solución en algunos casos.