502 Bad Gateway
Verwendung
Der Statuscode 502 Bad Gateway bedeutet, dass der Server als Proxy oder Gateway für einen Upstream-Server fungiert. Nach dem Weiterleiten der HTTP-Anfrage hat der Upstream-Server eine ungültige Antwort geliefert. Wie lange die Behebung dieses Problems dauert, ist nicht vorhersehbar.
Gibt der Ursprungsserver einen HTTP-Fehlerstatuscode zurück, wird erwartet, dass derselbe Statuscode samt zugehöriger Informationen an den Client weitergeleitet wird, damit das Problem möglichst genau beschrieben ist.
Erhält der Proxy überhaupt keine Antwort vom Upstream-Server, ist der Statuscode 504 Gateway Timeout passender.
Hinweis
502 Bad Gateway bedeutet, dass der Proxy eine ungültige Antwort vom Backend erhalten hat. Das Backend hat geantwortet, aber die Antwort war fehlerhaft oder unerwartet. 504 Gateway Timeout bedeutet, dass das Backend innerhalb der Zeitüberschreitung überhaupt nicht geantwortet hat. 502 deutet auf einen Absturz des Backends oder einen Protokollfehler hin, während 504 auf ein langsames oder nicht erreichbares Backend hinweist. Keiner der beiden Codes zeigt an, dass der Client etwas falsch gemacht hat.
SEO-Auswirkung
Googlebot wertet 5xx-Fehler als Signal, die Crawling-Rate für die gesamte Website vorübergehend zu senken. Bereits indexierte URLs bleiben zunächst erhalten, aber eine längere Ausfallzeit führt dazu, dass Google sie aus dem Index entfernt. Inhalte, die mit einer 502-Antwort ausgeliefert werden, werden ignoriert. Google behandelt 500, 502 und 503 in dieser Hinsicht identisch. Ein 5xx-Fehler bei der Datei robots.txt ist weitaus gravierender, selbst wenn jede andere Seite der Website 200 zurückgibt. Google stoppt das Crawling für bis zu 12 Stunden und greift anschließend bis zu 30 Tage lang auf eine zwischengespeicherte Kopie zurück. Besteht der Fehler fort, deindexiert Google die Website vollständig. Auch Bingbot wertet 5xx-Antworten als Crawling-Fehler. Anhaltende 5xx-Fehler verhindern die Indexierung in Bing.
Beispiel
Der Client fordert eine Ressource an, und der Server antwortet mit dem Statuscode 502 Bad Gateway, weil der Upstream-Server eine ungültige Antwort geliefert hat.
Anfrage
GET /news HTTP/1.1
Host: example.com
Antwort
HTTP/1.1 502 Bad Gateway
Content-Type: text/html; charset=UTF-8
Content-Length: 134
<html>
<head>
<title>Bad Gateway</title>
</head>
<body>
<p>The server is unreachable at this time.</p>
</body>
</html>
Behebung
Prüfen Sie zuerst /var/log/nginx/error.log oder das entsprechende Fehlerprotokoll des Proxys. Die Protokollmeldung benennt die Art des Upstream-Fehlers: abgelehnte Verbindung, vorzeitig geschlossene Verbindung oder ungültiger Header.
Häufige Grundursachen und ihre Behebung:
Prüfen Sie bei Apache-Reverse-Proxy-Setups die Direktiven ProxyPass/ProxyPassReverse und stellen Sie sicher, dass mod_proxy und mod_proxy_http aktiviert sind. Führen Sie apachectl configtest aus, bevor Sie neu starten.
Führen Sie nach dem Anwenden der Korrekturen nginx -t aus, um die Konfiguration zu prüfen, und laden Sie sie anschließend neu.
Code-Referenzen
.NET
HttpStatusCode.BadGateway
Rust
http::StatusCode::BAD_GATEWAY
Rails
:bad_gateway
Go
http.StatusBadGateway
Symfony
Response::HTTP_BAD_GATEWAY
Python3.5+
http.HTTPStatus.BAD_GATEWAY
Java
java.net.HttpURLConnection.HTTP_BAD_GATEWAY
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_BAD_GATEWAY
Angular
@angular/common/http/HttpStatusCode.BadGateway