Konfigurieren des Proxy-Server - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurieren des Proxy-Server

Elastic Beanstalk kann verwenden NGINX or Apache HTTPD als Reverse-Proxy, um Ihre Anwendung Ihrem Elastic Load Balancing Load Balancer auf Port 80 zuzuordnen. Die Standardeinstellung ist NGINX. Elastic Beanstalk bietet eine Standard-Proxykonfiguration, die Sie mit Ihrer eigenen Konfiguration entweder erweitern oder vollständig überschreiben können.

Standardmäßig wird der Proxy von Elastic Beanstalk für die Weiterleitung von Anforderungen an die Anwendung auf Port 5000 konfiguriert. Sie können den Standardport überschreiben, indem Sie für die PORT-Umgebungseigenschaft den Überwachungsport Ihrer Hauptanwendung festlegen.

Anmerkung

Der Port, auf dem Ihre Anwendung lauscht, hat keinen Einfluss auf den Port, den NGINX Der Server empfängt Anfragen vom Load Balancer.

Konfigurieren des Proxy-Servers auf Ihrer Plattformversion

Alle AL2 023/ AL2 -Plattformen unterstützen eine einheitliche Proxykonfigurationsfunktion. Weitere Informationen zur Konfiguration des Proxyservers auf Ihren Plattformversionen, auf denen AL2 AL2 023/ ausgeführt wird, finden Sie unter. Reverse-Proxy-Konfiguration

Wenn dein Elastic Beanstalk Node.js Die Umgebung verwendet eine Amazon AMI Linux-Plattformversion (vor Amazon Linux 2). Lesen Sie die Informationen in diesem Abschnitt.

Hinweise
  • Die Informationen in diesem Thema gelten nur für Plattformbranches, die auf Amazon Linux AMI (AL1) basieren. AL2023/ AL2 Plattformzweige sind nicht mit früheren Amazon Linux AMI (AL1) -Plattformversionen kompatibel und erfordern andere Konfigurationseinstellungen.

  • Am 18. Juli 2022 hat Elastic Beanstalk den Status aller Plattformbranchen, die auf Amazon Linux AMI (AL1) basieren, auf eingestellt gesetzt. Weitere Informationen zur Migration zu einem aktuellen und vollständig unterstützten Plattformzweig für Amazon Linux 2023 finden Sie unter Migrieren der Elastic-Beanstalk-Linux-Anwendung zu Amazon Linux 2023 oder Amazon Linux 2.

Das Tool Node.js Die Plattform verwendet einen Reverse-Proxy, um Anfragen von Port 80 auf der Instance an Ihre Anwendung weiterzuleiten, die Port 8081 abhört. Elastic Beanstalk bietet eine Proxy-Standard-Proxykonfiguration, die Sie entweder erweitern oder gänzlich mit einer eigenen Konfiguration überschreiben können.

Um die Standardkonfiguration zu erweitern, fügen Sie .conf-Dateien zu /etc/nginx/conf.d mit einer Konfigurationsdatei hinzu. Ein spezifisches Beispiel finden Sie unter Beenden von HTTPS auf EC2-Instances, auf denen Node.js ausgeführt wird.

Das Tool Node.js Die Plattform legt die fest PORT Umgebungsvariable für den Port, an den der Proxyserver den Verkehr weiterleitet. Lesen Sie diese Variable in Ihrem Code, um den Port Ihrer Anwendung zu konfigurieren.

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

Der NGINX Die Konfiguration leitet den Verkehr an einen Upstream-Server weiter, der als benannt nodejs ist. 127.0.0.1:8081 Sie können die Standardkonfiguration entfernen und Ihre eigene in einer Konfigurationsdatei bereitstellen.

Beispiel .ebextensions/proxy.config

Im folgenden Beispiel wird die Standard-Konfiguration entfernt und eine benutzerdefinierte Konfiguration hinzugefügt, die Datenverkehr an Port 5000 anstatt an 8081 weiterleitet.

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"

Die Beispielkonfiguration (/etc/nginx/conf.d/proxy.conf) verwendet die Standardkonfiguration unter /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf als Basis, um den Standard-Serverblock mit Komprimierungs- und Protokolleinstellungen und eine statische Dateizuordnung einzuschließen.

Der removeconfig-Befehl entfernt die Standardkonfiguration für den Container, um sicherzustellen, dass der Proxy-Server die benutzerdefinierte Konfiguration verwendet. Elastic Beanstalk erstellt die Standardkonfiguration während jeder Konfigurationsbereitstellung neu. Um dies zu berücksichtigen, wird im folgenden Beispiel ein post-configuration-deployment Hook (/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh) hinzugefügt. Dadurch wird die Standardkonfiguration entfernt und der Proxy-Server neu gestartet.

Anmerkung

Die Standardkonfiguration kann sich in future Versionen von ändern Node.js Plattform. Verwenden Sie die neueste Version der Konfiguration als Grundlage für Ihre Anpassungen, um Kompatibilität sicherzustellen.

Wenn Sie die Standardkonfiguration überschreiben, müssen Sie alle statischen Dateizuordnungen definieren und GZIP Komprimierung. Das liegt daran, dass die Plattform die Standardeinstellungen nicht anwenden kann.