Configuración del proxy inverso - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración del proxy inverso

Elastic Beanstalk utiliza nginx como proxy inverso para asignar su aplicación al balanceador de carga de Elastic Load Balancing en el puerto 80. Elastic Beanstalk proporciona una configuración de nginx predeterminada que puede ampliar o anular por completo con su propia configuración.

De forma predeterminada, Elastic Beanstalk configura el proxy nginx para reenviar las solicitudes a la aplicación en el puerto 5000. Puede invalidar el puerto predeterminado estableciendo la propiedad del entorno PORT en el puerto en el que desea que la aplicación principal esté a la escucha.

nota

El puerto en que su aplicación está a la escucha no afecta al puerto en el que el servidor nginx está a la escucha para recibir las solicitudes del balanceador de carga.

Configuración del servidor proxy en la versión de su plataforma

Todas las plataformas AL2023/AL2 son compatibles con una característica de configuración de proxy uniforme. Para obtener más información sobre la configuración del servidor proxy en las versiones de su plataforma que ejecutan AL2023/AL2, expanda la sección Configuración del proxy inverso de Ampliación de las plataformas Linux de Elastic Beanstalk.

Si su entorno Java SE de Elastic Beanstalk utiliza una versión de la plataforma de la AMI de Amazon Linux (anterior a Amazon Linux 2), lea la información adicional de esta sección.

Notas
  • La información de este tema solo se aplica a ramificaciones de plataforma basadas en la AMI de Amazon Linux (AL1). Las ramificaciones de la plataforma AL2023/AL2 son incompatibles con las versiones anteriores de la plataforma de la AMI de Amazon Linux (AL1) y requieren ajustes de configuración diferentes.

  • El 18 de julio de 2022, Elastic Beanstalk estableció el estado de todas las ramificaciones de la plataforma basadas en la AMI de Amazon Linux (AL1) como retirado. Para obtener más información sobre la migración a una ramificación de la plataforma Amazon Linux 2023 actual y totalmente compatible, consulte Migración de su aplicación de Linux de Elastic Beanstalk a Amazon Linux 2023 o Amazon Linux 2.

Para ampliar la configuración predeterminada de nginx de Elastic Beanstalk, añada los archivos de configuración .conf a una carpeta con el nombre .ebextensions/nginx/conf.d/ en el paquete de código fuente de su aplicación. La configuración de nginx de Elastic Beanstalk incluye archivos .conf en esta carpeta automáticamente.

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- conf.d | `-- myconf.conf `-- web.jar

Para anular por completo la configuración de nginx predeterminada de Elastic Beanstalk, incluya una configuración en el paquete de código fuente en .ebextensions/nginx/nginx.conf:

~/workspace/my-app/ |-- .ebextensions | `-- nginx | `-- nginx.conf `-- web.jar

Si anula la configuración de nginx de Elastic Beanstalk, agregue la siguiente línea a su nginx.conf para extraer las configuraciones de Elastic Beanstalk de Informes y monitorización de estado mejorados, los mapeos automáticos de la aplicación y los archivos estáticos.

include conf.d/elasticbeanstalk/*.conf;

La siguiente configuración de ejemplo de la aplicación de ejemplo Scorekeep sustituye la configuración predeterminada de Elastic Beanstalk para servir una aplicación web estática desde el subdirectorio public de /var/app/current, donde la plataforma Java SE copia el código fuente de la aplicación. La ubicación /api reenvía el tráfico a las rutas en /api/ a la aplicación Sprint que escucha en el puerto 5000. La aplicación web sirve el resto del tráfico en la ruta raíz.

user nginx; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofile 33282; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; include conf.d/*.conf; map $http_upgrade $connection_upgrade { default "upgrade"; } server { listen 80 default_server; root /var/app/current/public; location / { }git pull location /api { proxy_pass http://127.0.0.1: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; } access_log /var/log/nginx/access.log main; client_header_timeout 60; client_body_timeout 60; keepalive_timeout 60; gzip off; gzip_comp_level 4; # Include the Elastic Beanstalk generated locations include conf.d/elasticbeanstalk/01_static.conf; include conf.d/elasticbeanstalk/healthd.conf; } }