502 Bad Gateway
Utilisation
Le code de statut 502 Bad Gateway signifie que le serveur agit comme mandataire ou passerelle pour un serveur amont. Après avoir transmis la requête HTTP, le serveur amont a renvoyé une réponse invalide. Le délai de résolution de ce problème est imprévisible.
Lorsque le serveur d’origine renvoie un code de statut HTTP d’erreur, on attend que ce même code de statut et les informations associées soient transmis au client pour obtenir la description la plus exacte du problème.
Lorsque le mandataire ne reçoit aucune réponse du serveur amont, un code de statut 504 Gateway Timeout est plus approprié.
Remarque
502 Bad Gateway signifie que le mandataire a reçu une réponse invalide du backend. Le backend a répondu, mais la réponse était mal formée ou inattendue. 504 Gateway Timeout signifie que le backend n’a pas répondu du tout dans le délai imparti. Le 502 indique un plantage du backend ou une erreur de protocole, tandis que le 504 indique un backend lent ou injoignable. Aucun de ces deux codes n’indique que le client a mal agi.
Impact SEO
Googlebot considère les erreurs 5xx comme un signal l’invitant à réduire temporairement la vitesse d’exploration sur tout le site. Les URL précédemment indexées sont d’abord conservées, mais une indisponibilité prolongée conduit Google à les retirer de l’index. Tout contenu renvoyé avec une réponse 502 est ignoré. À cet égard, Google traite 500, 502 et 503 de façon identique. Une erreur 5xx sur le fichier robots.txt est bien plus grave, même si toutes les autres pages du site renvoient 200. Google interrompt l’exploration pendant jusqu’à 12 heures, puis se rabat sur une copie en cache pendant jusqu’à 30 jours. Si l’erreur persiste, Google désindexe entièrement le site. Bingbot considère lui aussi les réponses 5xx comme des échecs d’exploration. Des erreurs 5xx persistantes empêchent l’indexation dans Bing.
Exemple
Le client demande une ressource et le serveur répond avec un code de statut 502 Bad Gateway parce que le serveur amont a renvoyé une réponse invalide.
Requête
GET /news HTTP/1.1
Host: example.com
Réponse
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>
Comment corriger
Consultez d’abord /var/log/nginx/error.log ou le journal d’erreurs équivalent du mandataire. Le message de journal identifie le mode de défaillance du serveur amont : connexion refusée, connexion fermée prématurément, ou en-tête invalide.
Causes racines courantes et leurs correctifs :
Dans les configurations de proxy inverse Apache, vérifiez les directives ProxyPass/ProxyPassReverse et confirmez que mod_proxy et mod_proxy_http sont activés. Exécutez apachectl configtest avant de redémarrer.
Après avoir appliqué les correctifs, exécutez nginx -t pour valider la configuration, puis rechargez.
Références de code
.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