Alojo mi aplicación web Java en un entorno de Elastic Beanstalk de una sola instancia y agregué varios archivos ebextension que crean correctamente archivos de configuración para mí en cada implementación. Sin embargo, no puedo encontrar una manera de hacer que Beanstalk agregue nuevas configuraciones dentro de los directorios /etc/nginx o /etc/nginx/conf.d .
Seguí los pasos descritos aquí: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-java.html
La estructura de mi paquete de implementación se ve así:
$ zip -r deploy.zip api-1.0-SNAPSHOT-all.jar .ebextensions adding: api-1.0-SNAPSHOT-all.jar (deflated 11%) adding: .ebextensions/ (stored 0%) adding: .ebextensions/ssl-certificates.config (deflated 37%) adding: .ebextensions/https-instance-securitygroup.config (deflated 38%) adding: .ebextensions/nginx/ (stored 0%) adding: .ebextensions/nginx/conf.d/ (stored 0%) adding: .ebextensions/nginx/conf.d/https.conf (deflated 61%)Mis archivos son copias casi 1 a 1 de muestras en la guía anterior.
Durante la implementación, mis dos archivos *.config se ejecutan correctamente, pero falta /etc/nginx/conf.d/https.conf . Traté de solucionar el problema eliminando el directorio .ebextensions/nginx y reemplazándolo con otro archivo .config que crea /etc/nginx/conf.d/https.conf desde cero, pero esto no ayudó y el archivo aún estaba perdido.
Hice ssh en mi instancia de EC2 y esto es lo que encontré en /var/log/eb-engine.log :
2020/05/03 19:42:37.754375 [INFO] Executing instruction: configure proxy Nginx 2020/05/03 19:42:37.754393 [WARN] skipping nginx folder under .ebextensions 2020/05/03 19:42:37.754670 [INFO] No plugin in cfn metadata.Siento que podría haberme perdido algo muy obvio aquí, pero sorprendentemente no pude encontrar ninguna solución a mi problema. ¿Pensamientos? ¡Gracias!
Acabo de resolver el mismo problema.
puede resolver el problema fácilmente configurando la siguiente estructura de directorios.
~/my-app/ |-- readme.md |-- .ebextensions/ | |-- options.config # Option settings | -- cloudwatch.config # Other .ebextensions sections, for example -- .platform/ -- nginx/ # Proxy configuration |-- nginx.conf -- conf.d/ -- custom.conf -- elasticbeanstalk |-- server.confpara obtener más información, consulte esta url
my /var/log/eb-engine.log mostró la siguiente línea de mensaje.
Running command /bin/sh -c cp -rp /var/app/staging/.platform/nginx/. /var/proxy/staging/nginxSiento que soy la única persona en Internet con este problema. ;-)
Después de profundizar un poco más en los registros, me di cuenta de que Beanstalk simplemente sobrescribe mi configuración de nginx al final de un proceso de implementación. Esto significó que todos los archivos que crearon mis .ebextensions se perdieron.
No he logrado encontrar una solución "adecuada", pero lo solucioné con un enlace posterior a la implementación. Mi archivo de configuración de nginx ahora se genera en /home/ec2-user , en lugar de /etc/nginx , así:
files: /home/ec2-user/https.conf: content: | server { listen 443; server_name localhost; ssl on; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/certs/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } } Y luego en .platform/hooks/postdeploy/99_hack_nginx.sh (asegúrese de que este directorio esté incluido en su paquete de implementación, de la misma manera que .ebextensions ):
cp /home/ec2-user/https.conf /etc/nginx/conf.d sudo systemctl reload nginxAsegúrese de que tiene un modo adecuado:
chmod +x .platform/hooks/postdeploy/99_hack_nginx.shImplemente y disfrute de su tráfico HTTPS.