Configuration du serveur proxy - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration du serveur proxy

Elastic Beanstalk utilise NGINX ou Apache HTTPD comme proxy inverse pour mapper votre application à votre équilibreur de charge Elastic Load Balancing sur le port 80. La valeur par défaut est NGINX. Elastic Beanstalk fournit une configuration de proxy par défaut que vous pouvez étendre ou remplacer totalement par votre propre configuration.

Par défaut, Elastic Beanstalk configure le serveur proxy pour transmettre les demandes à votre application sur le port 5 000. Vous pouvez remplacer le port par défaut en définissant la PORTpropriété d'environnement sur le port écouté par votre application.

Note

Le port que votre application écoute n'affecte pas le port que le serveur NGINX écoute pour recevoir des demandes de l'équilibreur de charge.

Configuration du serveur proxy sur la version de votre plateforme

Toutes les plateformes AL2023/AL2 prennent en charge une fonctionnalité de configuration de proxy uniforme. Pour en savoir plus sur la configuration du serveur proxy sur vos versions de plateforme exécutant AL2023/AL2, développez la section Configuration de proxy inverse dans Extension des plateformes Linux Elastic Beanstalk.

Si votre environnement Elastic Beanstalk Node.js utilise une version de plateforme Amazon Linux AMI (antérieure à Amazon Linux 2), lisez les informations de cette section.

Remarques
  • Les informations de cette rubrique s'appliquent uniquement aux branches de plateforme basées sur l'AMI Amazon Linux (AL1). Les branches de plateforme AL2023/AL2 sont incompatibles avec les versions de plateforme précédentes de l'AMI Amazon Linux (AL1) et nécessitent des paramètres de configuration différents.

  • Le 18 juillet 2022, Elastic Beanstalk définira les statuts de toutes les branches de plateforme basées sur une AMI Amazon Linux (AL1) sur mise hors service. Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2.

La plateforme Node.js utilise un proxy inverse pour acheminer les requêtes du port 80 de l'instance vers le port 8081 d'écoute de votre application. Elastic Beanstalk fournit une configuration de proxy par défaut que vous pouvez étendre ou remplacer totalement par votre propre configuration.

Pour étendre la configuration par défaut, ajoutez des fichiers .conf à /etc/nginx/conf.d avec un fichier de configuration. Pour un exemple spécifique, veuillez consulter Suspension des connexions HTTPS sur des instances EC2 exécutant Node.js.

La plateforme Node.js définit la variable d'environnement PORT sur le port vers lequel le serveur proxy transfère le trafic. Lisez cette variable dans votre code pour configurer le port de votre application.

var port = process.env.PORT || 3000; var server = app.listen(port, function () { console.log('Server running at http://127.0.0.1:' + port + '/'); });

La configuration NGINX par défaut achemine le trafic vers un serveur en amont nommé nodejs à l'adresse 127.0.0.1:8081. Vous pouvez supprimer la configuration par défaut et fournir une configuration personnalisée dans un fichier de configuration.

Exemple .ebextensions/proxy.config

L'exemple suivant supprime la configuration par défaut et ajoute une configuration personnalisée qui achemine le trafic vers le port 5000 au lieu du port 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"

L'exemple de configuration (/etc/nginx/conf.d/proxy.conf) utilise la configuration par défaut dans /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf comme base pour inclure le bloc de serveur par défaut avec des paramètres de compression et de journalisation et un mappage de fichiers statiques.

La commande removeconfig supprime la configuration par défaut du conteneur pour que le serveur proxy utilise bien la configuration personnalisée. Elastic Beanstalk recrée la configuration par défaut lorsque chaque configuration est déployée. Pour ce faire, dans l'exemple suivant, un hook de déploiement après configuration (/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh) est ajouté. Celui-ci supprime la configuration par défaut et redémarre le serveur proxy.

Note

Il est possible que la configuration par défaut change dans les prochaines versions de la plateforme Node.js. Utilisez la version la plus récente de la configuration comme base pour vos personnalisations afin de garantir leur compatibilité.

Si vous remplacez la configuration par défaut, vous devez définir les mappages de fichiers statiques et la compression GZIP. Cela s'explique par le fait que la plateforme ne peut pas appliquer les paramètres standard.