Nuestro sitio web necesita el cumplimiento de HIPAA, por lo que todo debe estar encriptado. No quiero que el cliente reciba un mensaje de error cuando coloque " http : //mysite.com", por lo que necesito admitir tanto HTTP como HTTPS, y redirigir HTTP a HTTPS. Estoy en lo cierto?
Lo hice correctamente en los servidores web. Entonces, si me conecto directamente a los servidores web, HTTP se redirige automáticamente a HTTPS. Todo bien.
Pero los servidores web se encuentran detrás de un AWS Application Load Balancer. No sé cómo redirigir HTTP a HTTPS en el ELB. Por lo tanto, los navegadores de los clientes aún pueden conectarse al ELB a través de HTTP.
¿Cómo configurar HTTP => HTTPS en una AWS Application Load Balancer?
En otras palabras, estoy seguro de que la conexión entre el ELB y los servidores web son HTTPS, pero ¿cómo asegurarme de que la conexión entre los navegadores del cliente y el ELB sea HTTPS?
fuente
X-Forwarded-Proto
encabezado que envía LB.Respuestas:
Puede agregar la siguiente configuración a su archivo .htaccess. Pero antes de eso, asegúrese de que mod_rewrite esté habilitado en el servidor y que no se deniegue el archivo .htaccess.
Para obtener una explicación detallada, consulte la documentación oficial de aws end. https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
fuente
A partir de julio de 2018 , esto es compatible con los equilibradores de carga de aplicaciones.
HTTP:80
oyenteRedirect
https
443
Original host, path, query
301 - Permanently moved
Imagen de la configuración de un escucha HTTP a HTTPS en el equilibrador de carga de la aplicación AWS
fuente
Por lo general, lo que sucede es que el ELB está configurado para recibir https (puerto 443) y reenviar a la instancia EC2 (destino del equilibrador de carga) en http (puerto 80).
El servidor web de fondo redirige estas solicitudes al puerto 443 en el equilibrador de carga, lo que provoca un bucle infinito de redirección (entre el equilibrador de carga y el servidor web de fondo).
Un mensaje de error común es
ERR_TOO_MANY_REDIRECTS
.La solución es mirar el X-Fordered-Proto, que es el protocolo visto por el equilibrador de carga, al decidir la redirección.
Para nginx, la configuración se verá así:
y para apache .htaccess algo como esto:
NOTA: Aunque se podría pensar que sería conveniente que esto se manejara sin la reconfiguración del servidor web, a partir de la primavera de 2018 no hay forma de resolver esto usando solo ELB, es decir, debe configurar su servidor web para que esto funcione.
fuente