Tengo un balanceador de carga clásico en beanstalk e instancias nginx configuradas. Quiero redirigir solicitudes de http a https.
Configuré mis escuchas del balanceador de carga para redirigir al puerto 80 a sus instancias.
Creé un archivo en .ebextensions/nginx_config.config, en el que configuré la redirección y también filtré el control de salud.
Vea la reescritura de configuración a continuación:
files: /etc/nginx/conf.d/proxy.conf: owner: root group: root mode: "000644" content: | upstream nodejs { server 127.0.0.1:8081; keepalive 256; } server { listen 80; if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { set $year $1; set $month $2; set $day $3; set $hour $4; } access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; access_log /var/log/nginx/access.log main; location / { set $redirect 0; if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; } if ($http_user_agent ~* "ELB-HealthChecker") { set $redirect 0; } if ($redirect = 1) { return 301 https://$host$request_uri; } proxy_pass http://nodejs; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /health-check { access_log off; default_type text/plain; return 200 'OK'; } gzip on; gzip_comp_level 4; gzip_types text/html text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; } /opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh: owner: root group: root mode: "000755" content: | #!/bin/bash -xe rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf if [[ -e /etc/init/nginx.conf ]] ; then echo Using initctl to stop and start nginx initctl stop nginx || true initctl start nginx else echo Using service to stop and start nginx service nginx stop service nginx start fi container_commands: removeconfig: command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"
Pero parece que no pasa nada y el servidor sigue sin redirigir a https. Parece que mi configuración simplemente está siendo ignorada. ¿Cómo puedo redirigir a https en este caso?
Entonces, según mi sugerencia anterior. Cree un Balanceador de carga de aplicaciones con 2 oyentes.
1st Listener es un oyente 443 HTTPS que envía tráfico directamente a su grupo objetivo.
2nd Listener es un agente de escucha HTTP 80 que utiliza una regla de redirección que realiza una redirección a HTTPS.
Esta es la mejor práctica.
¿Puede hacer que su equilibrador de carga escuche en 443 con un certificado de ACM y luego redirija ese tráfico al puerto 80? Pero se recomienda encarecidamente usar un ALB como dijo @mokugo-devops arriba. Espero que esto ayude. También puede ver un problema similar AWS EB: redirigir todo el tráfico a https