Ich sehe HTTP-502-Fehler, wenn mein Client über einen Classic Load Balancer Anfragen an eine Website stellt. Wie kann ich das Problem beheben?

HTTP-502-(Bad-Gateway)-Fehler können aus einem der folgenden Gründe auftreten:

  • Der Webserver oder die zugehörigen Backend-Anwendungsserver, die auf EC2-Instances ausgeführt werden, geben eine Nachricht zurück, die von Ihrem Classic Load Balancer nicht geparst werden kann.
  • Der Webserver oder die zugehörigen Backend-Anwendungsserver geben eine eigene 502-Fehlermeldung zurück.

So finden Sie die Quelle dieser 502-Fehler:

  • Aktivieren Sie ELB-Zugriffsprotokolle auf Ihrem Classic Load Balancer, um den Backend- und Elastic-Load-Balancing-(ELB)-Antwortcode für jede Anfrage anzuzeigen. Ein Zugriffsprotokolleintrag enthält zwei Felder: Einen elb_status_code und einen backend_status_code. Verwenden Sie diese Codes, um die Quelle des 502-Fehlers zu bestimmen.
  • Zeigen Sie die CloudWatch-Metriken der Lastenverteilung an, um vom Backend generierte 502-Fehler anzuzeigen, die unter der Metrik HTTPCode_Backend_5XX angezeigt werden. Von ELB generierte 502-Fehler werden unter der Metrik HTTPCode_ELB_5XX angezeigt.

Wenn die Backend-Antwort die Quelle des ELB-502-Fehlers ist, kann das Problem folgende Ursachen haben:

  • Eine Antwort mit mehr als einem CRLF zwischen jedem Header.
  • Eine Antwort, die einen Inhalts-Länge-Header enthält, der eine nicht ganzzahlige Zahl enthält.
  • Eine Antwort hat mehr Byte im Hauptteil als der Wert des Inhalts-Länge-Headers.

Wenn der Fehler 502 von Ihren Backend-Servern generiert wird, wenden Sie sich an den Besitzer Ihrer Anwendung. Wenn der Fehler 502 vom Classic Load Balancer generiert wird, ist die HTTP-Antwort vom Backend fehlerhaft. Befolgen Sie diese Schritte, um von ELB generierte 502-Fehler zu beheben: 

1. Überprüfen Sie, ob der von der Backend-Anwendung zurückgegebene Antworttext den HTTP-Spezifikationen entspricht, wie in den folgenden RFCs erwähnt:
RFC 7230 - HTTP/1.1: Nachrichtensyntax und Routing
RFC 7231 - HTTP/1.1: Semantik und Inhalt
RFC 7232 - HTTP/1.1: Bedingte Anforderungen
RFC 7233 - HTTP/1.1: Bereichsanforderungen
RFC 7234 - HTTP/1.1: Caching
RFC 7235 - HTTP/1.1: Authentifizierung

2. Vergewissern Sie sich, dass der Antwortheader die richtige Syntax aufweist: einen Schlüssel und den Wert, z. B. Content-Type:text. Stellen Sie sicher, dass im HTTP-Antwortheader keine Inhaltslängen- oder Übertragungscodierung fehlt. Weitere Informationen zu HTTP-Headerfeldern des Webservers finden Sie unter Liste der HTTP-Headerfelder. Untersuchen Sie die zurückgegebenen HTTP-Antworten, indem Sie einen Befehl ähnlich dem folgenden ausführen:

curl -vko /dev/null server_instance_IP

3. Überprüfen Sie das ELB-Zugriffsprotokoll auf doppelte HTTP-502-Fehler. 502-Fehler für elb_status_code und backend_status_code weisen darauf hin, dass ein Problem mit einer oder mehreren der Webserver-Instances vorliegt. Ermitteln Sie, welche Webserver-Instances das Problem aufweisen, und überprüfen Sie dann die Webserver-Protokolle der Backend-Webserver-Instances. Sehen Sie sich die folgenden Protokollspeicherorte für einige gängige Webserver und Betriebssysteme an:

Apache-Protokolle

  • Die Webserver-Protokolle für CentOS, RHEL, Fedora und Amazon Linux befinden sich im Verzeichnis /var/log/httpd/.
  • Die Webserver-Protokolle für Debian und Ubuntu Linux befinden sich in den Verzeichnissen /var/log/apache2 und /var/log/lighthttpd/.

Nginx-Protokolle

  • Der Speicherort des nginx-Zugriffsprotokolls ist in der Datei nginx.conf definiert: access_log /path/to/access.log
  • Der Standardspeicherort ist /var/log/nginx/access.log

IIS-Protokolle

Die Webserver-Protokolle für Windows IIS 7, IIS 7.5 und IIS 8.0 werden im Verzeichnis inetpub\logs\Logfiles gespeichert. Weitere Informationen zu den Internet-Information-Server-(IIS)-Protokollen finden Sie unter Der HTTP-Statuscode in IIS 7.0, IIS 7.5 und IIS 8.0. Wenn Sie bestätigt haben, dass Ihre 502-Fehler ELB-generiert sind und die Antwort Ihres Backends den RFC-Konventionen entspricht, wenden Sie sich an den AWS Support.


Hat Ihnen diese Seite geholfen? Ja | Nein

Zurück zum AWS-Support-Wissenszentrum

Hilfe erforderlich? Besuchen Sie das AWS Support Center

Veröffentlicht: 09.09.2016

Aktualisiert: 10.04.2018