Quiero redirigir toda la solicitud HTTP a la solicitud https en ELB . Tengo dos instancias EC2. Estoy usando nginx para el servidor. He intentado reescribir los archivos conf de nginx sin éxito. Me encantaría recibir algunos consejos al respecto.
redirect
nginx
amazon-ec2
https
amazon-elb
Amit Badheka
fuente
fuente
Respuestas:
Los balanceadores de carga de aplicaciones de AWS ahora admiten la redirección nativa de HTTP a HTTPS.
Para habilitar esto en la consola, haga lo siguiente:
Lo mismo se puede lograr utilizando la CLI como se describe aquí .
También es posible hacer esto en Cloudformation, donde necesita configurar un objeto Listener como este:
Si aún usa Classic Load Balancers, elija una de las configuraciones de NGINX descritas por los demás.
fuente
instances
pestaña)ELB establece el
X-Forwarded-Proto
encabezado, puede usarlo para detectar si la solicitud original fue a HTTP y redirigir a HTTPS luego.Puedes probar esto en tu
server
conf:Eche un vistazo a los documentos de ELB .
fuente
nginx
configuración, pero el principio es aplicable a cualquier servidor web.Tuve el mismo problema, en mi situación, HTTPS fue manejado completamente por ELB y no conocía mi dominio de origen antes de tiempo, así que terminé haciendo algo como:
Y luego, por supuesto, apuntar el ELB 'https' al puerto de instancia 80 y luego la ruta 'http' al puerto de instancia 81.
fuente
Amazon Elastic Load Balancer (ELB) admite un encabezado HTTP llamado X-FORWARDED-PROTO. Todas las solicitudes HTTPS que pasan por ELB tendrán el valor de X-FORWARDED-PROTO igual a “HTTPS”. Para las solicitudes HTTP, puede forzar HTTPS agregando la siguiente regla de reescritura simple. ¡Para mí funciona bien!
apache
Puede agregar las siguientes líneas en su archivo .htaccess:
O si usa vhost.conf para administrar varios dominios en el mismo servidor web EC2, puede agregar lo siguiente a vhost.conf (agréguelo al dominio que desea usar https para ello):
IIS
Instale el módulo IIS Url-Rewrite, usando la GUI de configuración agregue estas configuraciones:
Lee mas aquí
fuente
RewriteCond %{HTTP:X-Forwarded-Proto} !(https|^$)
Las soluciones de htaccess anteriores hicieron que fallara la verificación de estado de ELB. Tuve algunos problemas para encontrar la solución hasta que descubrí un artículo en línea en el que alguien tenía los mismos problemas que yo. Su solución fue agregar esto al comienzo del archivo htaccess en su lugar:
Fuente: redirección de HTTP a HTTPS con AWS y ELB
fuente
Puede que no sea la solución que está buscando, pero otra opción podría ser utilizar AWS CloudFront además de ELB. CloudFront ofrece la opción de redirigir todo el tráfico HTTP entrante a HTTPS.
fuente
Tuve un problema extraño con la configuración de nginx y ELB. Mi configuración incluía 3 servicios diferentes dentro de un nginx detrás de ELB. Y tuve un problema de contenido mixto: cuando su solicitud a ELB es https, pero solo dentro de ELB http, y el servidor crea una ruta relativa a estática usando http, por lo que el navegador falla con el problema de 'contenido mixto'. Y debo crear una solución para el trabajo de http / https sin redirecciones.
Aquí está la configuración ubicada en la
nginx/conf.d/
carpeta:Esto significa que conoceremos qué es el protocolo de cliente real. Como ves, lo tendremos en
$switch
var. Y en este momento lo usa en todos los lugares donde lo necesita:Con la configuración de HTTPS, la aplicación php detectará automáticamente el protocolo correcto y construirá cuidadosamente la ruta relativa para evitar problemas de contenido mixto.
Atentamente.
fuente
Basado en la respuesta de @ Ulli Si desea configurarlo usando Terraform , aquí hay un ejemplo>
Fuente
fuente
Cree un archivo
.ebextensions/00_forward_http_to_https.config
con el siguiente contenido:Asegúrese de configurar la variable de entorno APP_URL desde la consola de administración de AWS de antemano.
fuente