Configuration du proxy inverse - 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 proxy inverse

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

Par défaut, Elastic Beanstalk configure le serveur proxy nginx pour transmettre les demandes à votre application sur le port 5000. Vous pouvez remplacer le port par défaut en définissant la propriété d'environnement PORT sur le port que votre application écoute.

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 Java SE Elastic Beanstalk utilise une version de plate-forme AMI Amazon Linux (antérieure à Amazon Linux 2), lisez les informations supplémentaires dans 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.

Pour étendre la configuration nginx par défaut d'Elastic Beanstalk, ajoutez les fichiers de configuration .conf dans un dossier nommé .ebextensions/nginx/conf.d/ dans le bundle de fichiers source de votre application. La configuration nginx Elastic Beanstalk inclut automatiquement les fichiers .conf dans ce dossier.

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

Pour remplacer complètement la configuration nginx Elastic Beanstalk par défaut, incluez une configuration dans votre bundle de fichiers source su .ebextensions/nginx/nginx.conf:

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

Si vous substituez une configuration nginx Elastic Beanstalk, ajoutez la ligne suivante à votre nginx.conf pour extraire les configurations Elastic Beanstalk pour Surveillance et création de rapports d'intégrité améliorée, les mappages d'application automatiques et les fichiers statiques.

include conf.d/elasticbeanstalk/*.conf;

L'exemple de configuration suivant provenant de l'exemple d'application Scorekeep remplace la configuration Elastic Beanstalk par défaut pour servir une application web statique depuis le sous-répertoire public de /var/app/current, où la plateforme Java SE copie le code source de l'application. L'emplacement /api achemine le trafic vers des routes sous /api/ jusqu'à l'application Spring à l'écoute sur le port 5000. Le reste du trafic est servi par l'application web au chemin racine.

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; } }