https - tipos - ¿Cuál es el estándar de facto para que un proxy inverso le diga al SSL de fondo que se usa?
servidor proxy online (2)
Tengo un proxy inverso que hace HTTPS en el exterior, pero HTTP en el interior.
Esto significa que, de forma predeterminada, las URL dentro de la aplicación tendrán HTTP como esquema, ya que esta es la forma en que se está contactando.
¿Cómo puede el proxy decirle al backend que se debe usar HTTPS?
El proxy puede agregar encabezados adicionales (o sobrescribir) a las solicitudes que recibe y pasa al back-end. Se pueden usar para comunicar información al back-end.
Hasta ahora he visto una pareja utilizada para forzar el uso de https en el esquema de URL:
X-Forwarded-Protocol: https
X-Forwarded-Ssl: on
X-Url-Scheme: https
Y wikipedia también menciona:
# a de facto standard:
X-Forwarded-Proto: https
# Non-standard header used by Microsoft applications and load-balancers:
Front-End-Https: on
Esto es lo que debe agregar a VirtualHost en apache : otros proxies deben tener una funcionalidad similar.
RequestHeader set X-FORWARDED-PROTOCOL https
RequestHeader set X-Forwarded-Ssl on
# etc.
Creo que es mejor configurarlos todos, o configurar uno que funcione y eliminar los otros conocidos. Para evitar que los clientes malvados se metan con ellos.
Tardé varias horas en buscar el entorno mágico para mi entorno. Tengo un proxy HTTP httpd apache inverso delante de un servidor de aplicaciones jetty y un servidor http apache2. Esta answer realmente me dio la información que funcionó. Para mí, agregar el conjunto de RequestHeader "X-Forwarded-Proto" expr =% {REQUEST_SCHEME} al archivo conf del sitio fue suficiente para que el destino usara https en lugar de http como protocolo al crear enlaces en la respuesta. Probé el X-FORWARDED-PROTOCOL arriba, pero eso no funcionó. Esperemos que esto ayude en futuras búsquedas de google!