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 servidor proxy
Elastic Beanstalk puede usar NGINX o Apache HTTPD como proxy inverso para asignar la aplicación al balanceador de cargas de Elastic Load Balancing en el puerto 80. El valor predeterminado es NGINX. Elastic Beanstalk proporciona una configuración de proxy predeterminada que puede ampliar o anular por completo con su propia configuración.
De forma predeterminada, Elastic Beanstalk configura el proxy para reenviar las solicitudes a la aplicación en el puerto 5000. Puede invalidar el puerto predeterminado al establecer la PORT
propiedad del entorno en el puerto en el que la aplicación principal esté a la escucha.
nota
El puerto en el que escucha la aplicación no afecta al puerto en el que está NGINX el servidor escucha las solicitudes del balanceador de cargas.
Configuración del servidor proxy en la versión de su plataforma
Todas las AL2 plataformas AL2 023/ admiten una función 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 AL2 AL2 023/, consulte. Configuración del proxy inverso
Si su Elastic Beanstalk Node.js El entorno utiliza una versión de la plataforma AMI de Amazon Linux (anterior a Amazon Linux 2); lea la información de esta sección.
Notas
-
La información de este tema solo se aplica a las ramas de plataforma basadas en la AMI de Amazon Linux (AL1). AL2Las ramas de la AL2 plataforma 023/ no son compatibles con las versiones anteriores de la plataforma AMI (AL1) de Amazon Linux y requieren ajustes de configuración diferentes.
-
El 18 de julio de 2022, Elastic Beanstalk estableció el estado de todas las ramas de plataforma basadas en la AMI de Amazon Linux () como retiradas. AL1 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.
La Node.js la plataforma utiliza un proxy inverso para retransmitir las solicitudes desde el puerto 80 de la instancia a la aplicación que escucha en el puerto 8081. Elastic Beanstalk proporciona una configuración de proxy predeterminada que puede ampliar o invalidar completamente su propia configuración.
Para ampliar la configuración predeterminada, añada archivos .conf
a /etc/nginx/conf.d
con un archivo de configuración. Para ver un ejemplo específico, consulteFinalización de HTTPS en EC2 instancias que ejecutan Node.js.
La Node.js la plataforma establece el PORT variable de entorno al puerto al que el servidor proxy pasa el tráfico. Lea esta variable en el código para configurar el puerto de la aplicación.
var port = process.env.PORT || 3000;
var server = app.listen(port, function () {
console.log('Server running at http://127.0.0.1:' + port + '/');
});
El valor de tiempo de espera predeterminado de NGINX la configuración reenvía el tráfico a un servidor ascendente cuyo nombre nodejs
es. 127.0.0.1:8081
Puede eliminar la configuración predeterminada y proporcionar la propia en un archivo de configuración.
ejemplo .ebextensions/proxy.config
El siguiente ejemplo elimina la configuración predeterminada y agrega una configuración personalizada que reenvía el tráfico al puerto 5000, en lugar del puerto 8081.
files:
/etc/nginx/conf.d/proxy.conf:
mode: "000644"
owner: root
group: root
content: |
upstream nodejs {
server 127.0.0.1:5000;
keepalive 256;
}
server {
listen 8080;
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 / {
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;
}
gzip on;
gzip_comp_level 4;
gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location /static {
alias /var/app/current/static;
}
}
/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh:
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash -xe
rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
service nginx stop
service nginx start
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"
La configuración de ejemplo (/etc/nginx/conf.d/proxy.conf
) utiliza la configuración predeterminada de /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
como punto de partida para incluir el bloque de servidores predeterminado con configuración de compresión y registros y un mapeo de archivos estáticos.
El comando removeconfig
elimina la configuración predeterminada del contenedor para asegurarse de que el servidor proxy utiliza la configuración personalizada. Elastic Beanstalk vuelve a crear la configuración predeterminada cuando se implementa cada configuración. Para tener esto en cuenta, en el siguiente ejemplo, se agrega un post-configuration-deployment hook (/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh
). Esto elimina la configuración predeterminada y reinicia el servidor proxy.
nota
La configuración predeterminada podría cambiar en futuras versiones del Node.js plataforma. Utilice la última versión de la configuración como punto de partida para las personalizaciones con el fin de garantizar la compatibilidad.
Si anula la configuración predeterminada, debe definir cualquier mapeo de archivos estáticos y GZIP compresión. Esto se debe a que la plataforma no puede aplicar la configuración estándar.