apache-2.2 – http en el encabezado de ubicación cuando la solicitud original se realizó a través de https

Pregunta:

Actualmente estoy implementando https en nuestro entorno de producción, pero me estoy rascando la cabeza por una pequeña cosa aquí.

SSL termina en el balanceador de carga y el flujo en nuestra pila es básicamente así:

Producción : Navegador <- https -> Balanceador de carga <- http -> Apache <- http -> Balanceador de carga <- http -> Tomcat

Prueba : Navegador <- https -> nginx <- http -> Balanceador de carga <- http -> Tomcat

Cuando accedo a nuestra página de inicio de sesión a través de HTTPS:

Solicitar encabezados

POST /login/form HTTP/1.1
Host: www.example.org
Connection: keep-alive
Content-Length: 74
Cache-Control: max-age=0
Origin: https://www.example.org
Content-Type: application/x-www-form-urlencoded
Referer: https://www.example.org/login
Accept-Encoding: gzip,deflate,sdch
Accept-Language: nb,en-US;q=0.8,en;q=0.6

Encabezados de respuesta

HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Fri, 17 Jan 2014 11:16:50 GMT
Content-Length: 0
Connection: keep-alive
Set-Cookie: FOO=example
Location: http://www.example.org/portal
Strict-Transport-Security: max-age=31536000

Hablé con un desarrollador y me dijo lo siguiente:

En el código hay algo como request.sendRedirect ("/ portal") y Tomcat hace el resto.

Puedo reproducir el problema en el entorno de prueba, aunque una pila un poco diferente.

Mis preguntas:

  1. ¿Por qué obtengo http como esquema en el encabezado de Location cuando la solicitud original del navegador se realizó con https ?
  2. ¿Es esto un problema de Apache mod_rewrite / mod_proxy o nginx?
  3. ¿Es esto un problema con Tomcat?

Respuesta:

Obtiene http en los encabezados de respuesta porque la solicitud que llega a Apache es HTTP: el SSL se ha eliminado en el equilibrador de carga. Entonces, por lo que ve Apache, es solo una solicitud HTTP.

Puede solucionar esto configurando

ServerName https://www.example.org

en la configuración de host global o virtual. Esto anulará el esquema http predeterminado para que Apache envíe la respuesta que desee. La documentación de ServerName menciona esto.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım