Erreur 502 Bad Gateway : signification et solutions

Point clé

Une erreur 502 Bad Gateway signifie que le serveur que vous avez atteint est une passerelle ou un proxy (nginx, Cloudflare, un load balancer) et qu'il a reçu une réponse invalide du serveur d'application situé derrière lui. En tant que visiteur, attendez une minute, rechargez, et vérifiez si le site est hors ligne pour tout le monde. En tant que propriétaire du site, le journal d'erreurs de nginx indique généralement en une ligne lequel de ces cas s'est produit : l'application ne tourne pas, proxy_pass pointe vers le mauvais port ou socket, l'application a planté en pleine requête, ou les en-têtes de réponse étaient trop gros pour le tampon du proxy.

Vérifiez maintenant

Page d'erreur nginx 502 Bad Gateway à côté des cinq vérifications qui corrigent la plupart des erreurs 502
Page d'erreur nginx 502 Bad Gateway à côté des cinq vérifications qui corrigent la plupart des erreurs 502
Commencer la lecture
  1. Qu'est-ce que l'erreur 502 Bad Gateway ?
  2. Les différents visages de l'erreur 502
  3. 502, 500, 503 ou 504 : quelle différence ?
  4. Quelles sont les causes d'une erreur 502 Bad Gateway ?
  5. Comment corriger une erreur 502 en tant que visiteur
  6. Comment corriger une erreur 502 Bad Gateway sur votre serveur
  7. 1. Lire le journal d'erreurs du proxy
  8. 2. Vérifier que l'application en amont tourne
  9. 3. Vérifier que proxy_pass pointe vers le bon port ou socket
  10. 4. Un cas réel : comment dnsrobot.net a renvoyé une 502
  11. Node.js derrière un load balancer : des 502 aléatoires
  12. Erreur 502 Bad Gateway sur Cloudflare
  13. Une erreur 502 nuit-elle au SEO ?
  14. Questions fréquemment posées

Qu'est-ce que l'erreur 502 Bad Gateway ?

502 Bad Gateway est un code de statut HTTP qui signifie que le serveur qui vous répond agit comme passerelle ou proxy, et qu'il a reçu une réponse invalide du serveur placé derrière lui. Le standard HTTP (RFC 9110, section 15.6.3) la définit exactement ainsi : le serveur, « agissant en tant que passerelle ou proxy, a reçu une réponse invalide d'un serveur entrant qu'il a sollicité en tentant de traiter la requête ».

La plupart des sites web modernes comportent au moins deux couches. Un serveur frontal, comme nginx, Apache, Cloudflare ou un load balancer cloud, accepte votre connexion, puis transmet la requête à une application en amont (upstream) comme PHP-FPM, une application Node.js, Gunicorn pour Python ou un conteneur. Quand cet upstream est arrêté, plante ou renvoie quelque chose que le proxy ne peut pas exploiter, le proxy n'a rien à vous donner et renvoie donc une 502.

Le point essentiel : la passerelle elle-même fonctionne. Elle a reçu votre requête et y a répondu. La panne se situe un cran plus loin.

502 pour tout le monde, ou seulement pour vous ? Vérifiez

Les différents visages de l'erreur 502

Le code de statut est partout le même, mais la page affichée dépend du proxy qui l'a produite :

D'où elle vientCe qu'affiche la page
nginx502 Bad Gateway, avec nginx (et parfois un numéro de version) en dessous
Apache (mod_proxy)Proxy Error. The proxy server received an invalid response from an upstream server.
Cloudflare (votre origine a échoué)Error 502 Bad gateway, avec les cases d'état Browser / Cloudflare / Host
Cloudflare (sa propre erreur)Une page simple indiquant 502 Bad Gateway, avec « cloudflare » en dessous
Microsoft IIS (ARR / ASP.NET Core)HTTP Error 502.3 - Bad Gateway, ou HTTP Error 502.5 - Process Failure
Services Google502. That's an error. The server encountered a temporary error…
Navigateurs / applicationsHTTP Error 502, 502 Proxy Error, Bad Gateway: The proxy server received an invalid response

Quelle que soit la version affichée, le nom du proxy en bas de page est un indice utile : il indique au propriétaire du site quelle couche examiner.

502, 500, 503 ou 504 : quelle différence ?

Les codes 5xx signifient tous « problème de serveur », mais chacun désigne une couche différente :

CodeNomSignificationCause typique
500Internal Server ErrorL'application elle-même a échoué en traitant la requêteBug dans le code, erreur fatale PHP, mauvaise configuration
502Bad GatewayLe proxy a reçu de l'upstream une réponse invalide, ou aucune réponse exploitableApplication arrêtée, plantée, mauvais port ou socket, en-têtes trop gros
503Service UnavailableLe serveur ne peut temporairement pas traiter les requêtesSurcharge, mode maintenance, limitation de débit
504Gateway TimeoutLe proxy a attendu l'upstream puis a abandonnéRequête de base de données lente, script long, délai d'attente trop court

Règle simple : 502 = l'upstream a refusé la connexion, a raccroché ou a renvoyé une mauvaise réponse, 504 = l'upstream n'a pas répondu à temps. Nos guides consacrés aux erreurs voisines les détaillent : 500 Internal Server Error, 503 Service Unavailable et 504 Gateway Timeout.

Quelles sont les causes d'une erreur 502 Bad Gateway ?

  • L'application en amont ne tourne pas. PHP-FPM, Node, Gunicorn ou le conteneur a planté, n'a pas démarré après un déploiement, ou est en train de redémarrer.
  • Le proxy pointe au mauvais endroit. proxy_pass ou fastcgi_pass utilise le mauvais port, un ancien chemin de socket PHP après une mise à jour, ou localhost à l'intérieur d'un conteneur Docker.
  • L'application plante sur certaines requêtes. Une page déclenche un arrêt pour manque de mémoire ou une exception non gérée, et la connexion se ferme avant toute réponse.
  • Tous les workers sont occupés. PHP-FPM a atteint pm.max_children : les nouvelles requêtes attendent dans la file du socket. La plupart finissent en 504 par expiration ; quand la file est pleine, nginx consigne (11: Resource temporarily unavailable) et renvoie une 502.
  • Les en-têtes de réponse sont trop gros. De gros cookies ou de longs en-têtes de sécurité dépassent le proxy_buffer_size de nginx.
  • Incohérence de keep-alive derrière un load balancer. L'application ferme les connexions inactives plus tôt que ne le prévoit le load balancer, qui envoie alors une requête dans une connexion en cours de fermeture.
  • Le proxy ne peut plus joindre l'upstream après un changement réseau. Un pare-feu qui rejette le proxy, ou un upstream passé à une nouvelle IP, donne une 502 (Connection refused, No route to host). Un pare-feu qui abandonne les paquets en silence donne plutôt une 504, et derrière Cloudflare ces cas s'affichent en 521 ou 522.

Comment corriger une erreur 502 en tant que visiteur

Vous ne pouvez pas réparer le serveur de quelqu'un d'autre, mais ces étapes confirment que le problème vient bien de son côté et éliminent les rares causes locales :

  • Attendez 30 à 60 secondes et rechargez (Ctrl + R, ou Cmd + R sur Mac). Beaucoup de 502 ne durent que le temps d'un déploiement ou d'un redémarrage.
  • Vérifiez si le site est hors ligne pour tout le monde. Le Vérificateur de site en panne de DNS Robot ouvre la page depuis 11 endroits, et le Vérificateur d'en-têtes HTTP affiche le code de statut exact que reçoit notre serveur. S'ils obtiennent aussi une 502, le problème vient du site, pas de vous.
  • Forcez le rechargement avec Ctrl + Shift + R (Mac : Cmd + Shift + R), au cas rare où une page d'erreur en cache vous serait affichée.
  • Videz votre cache DNS si le site a récemment changé d'hébergeur, pour atteindre le nouveau serveur. Voici comment vider le cache DNS sur chaque système.
  • Désactivez VPN et proxys. Votre propre proxy peut être la « passerelle » défaillante, surtout sur les réseaux d'entreprise.
  • Essayez un autre navigateur ou votre téléphone en données mobiles. Si cela fonctionne, supprimez les cookies de ce site.

Comment corriger une erreur 502 Bad Gateway sur votre serveur

Côté serveur, la 502 fait partie des erreurs les plus faciles à corriger, car le proxy consigne généralement ce qui s'est mal passé (la course de keep-alive d'un load balancer et les 502 propres à Cloudflare font exception). Effectuez ces trois vérifications dans l'ordre ; la quatrième partie est un cas réel.

1. Lire le journal d'erreurs du proxy

Reproduisez la 502, puis lisez les 50 dernières lignes du journal d'erreurs du proxy (commandes sous le tableau). Chacun de ces messages nginx oriente vers sa propre solution :

Message du journalSignification
connect() failed (111: Connection refused) while connecting to upstreamRien n'écoute sur le port de l'upstream : l'application est arrêtée ou sur un autre port
connect() to unix:/run/php/php8.x-fpm.sock failed (2: No such file or directory)Le socket PHP-FPM n'existe pas, généralement après un changement de version de PHP
connect() to unix:… failed (13: Permission denied)nginx ne peut pas accéder au socket : corrigez listen.owner / listen.group
connect() to unix:… failed (11: Resource temporarily unavailable)La file du socket PHP-FPM est pleine : tous les workers sont occupés (pm.max_children)
upstream prematurely closed connection while reading response headerL'application a planté ou fermé la connexion en pleine requête
upstream sent too big header while reading response header from upstreamLes en-têtes de réponse dépassent proxy_buffer_size (fastcgi_buffer_size pour PHP-FPM)
no live upstreams while connecting to upstreamTous les serveurs du bloc upstream sont marqués en échec
bash
# nginx
sudo tail -n 50 /var/log/nginx/error.log

# Apache
sudo tail -n 50 /var/log/apache2/error.log    # Debian/Ubuntu
sudo tail -n 50 /var/log/httpd/error_log      # RHEL/Alma/Rocky

2. Vérifier que l'application en amont tourne

bash
# PHP-FPM (adaptez la version)
sudo systemctl status php8.3-fpm
sudo journalctl -u php8.3-fpm -n 50

# Node.js sous PM2
pm2 status
pm2 logs --lines 50

# Docker
docker ps -a          # cherchez les conteneurs qui redémarrent en boucle
docker logs --tail 50 <container>

# A-t-il été tué pour avoir consommé trop de mémoire ?
sudo dmesg -T | grep -i "killed process"

Si le service est arrêté, démarrez-le et cherchez pourquoi il s'est arrêté : un déploiement raté, une erreur de syntaxe dans la nouvelle version, ou l'OOM killer (manque de mémoire). Dans le journal de PHP-FPM, server reached pm.max_children setting signifie que tous les workers étaient occupés. N'augmentez pm.max_children que si le serveur a la RAM nécessaire ; sinon, trouvez les requêtes lentes qui monopolisent les workers.

3. Vérifier que proxy_pass pointe vers le bon port ou socket

Comparez ce vers quoi nginx est configuré pour transmettre avec ce qui écoute réellement :

bash
# Vers quoi nginx transmet-il ?
sudo nginx -T 2>/dev/null | grep -n "proxy_pass\|fastcgi_pass"

# Qu'est-ce qui écoute réellement ?
sudo ss -tlnp            # ports TCP et leurs processus
ls -l /run/php/          # fichiers socket de PHP-FPM

Deux incohérences classiques : après une mise à jour de PHP, le socket devient php8.3-fpm.sock alors que nginx pointe toujours vers php8.1-fpm.sock ; et dans Docker, proxy_pass http://localhost:3000 désigne le conteneur nginx lui-même et non l'application, utilisez donc le nom du service Compose (http://app:3000).

4. Un cas réel : comment dnsrobot.net a renvoyé une 502

Cela nous est arrivé le 30 septembre 2026. Après la publication d'une série de nouveaux articles de blog, un seul d'entre eux renvoyait 502 Bad Gateway via nginx 1.24, alors que toutes les autres pages fonctionnaient. L'application Next.js derrière nginx renvoyait cette même page avec un 200 OK quand nous la demandions directement sur le port 3000. L'application allait donc bien, et c'était la passerelle qui échouait.

Le journal d'erreurs de nginx donnait la réponse en une ligne : upstream sent too big header while reading response header from upstream. Les en-têtes de réponse de cette page atteignaient 4 087 octets, principalement un long en-tête Content-Security-Policy plus des en-têtes Link de préchargement. nginx lit la première partie de la réponse, en-têtes compris, dans un tampon défini par proxy_buffer_size, qui vaut par défaut une page mémoire : 4 Ko sur notre serveur. Il ne restait que 9 octets de marge, et le bloc d'en-têtes complet, ligne de statut comprise, a débordé.

La correction tenait en trois lignes dans le bloc location qui transmet à l'application ; après nginx -t et un rechargement, la page renvoyait 200 :

nginx
location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_buffer_size 16k;        # place pour les gros en-têtes (4k par défaut auparavant)
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
}

La leçon : si seules certaines pages renvoient une 502 alors que le reste du site fonctionne, cherchez une limite de taille, comme de gros en-têtes ou de grosses valeurs Set-Cookie sur ces pages, avant de soupçonner l'application.

Node.js derrière un load balancer : des 502 aléatoires

Si vous faites tourner Node.js derrière un AWS Application Load Balancer ou un équilibreur similaire et que vous voyez des 502 occasionnelles sans aucune erreur dans les journaux de l'application, vérifiez les délais de keep-alive. Le serveur HTTP de Node ferme par défaut les connexions keep-alive inactives au bout de 5 secondes (server.keepAliveTimeout, jusqu'à Node.js 26 inclus ; Node 24.6 et 22.19 y ont ajouté un keepAliveTimeoutBuffer de 1 seconde, et la prochaine version majeure porte la valeur par défaut à 65 secondes), alors qu'un ALB AWS garde les connexions inactives ouvertes 60 secondes. Il arrive que l'équilibreur réutilise une connexion au moment précis où Node la ferme, et cette requête revient en 502.

La solution consiste à garder le délai de l'application plus long que celui de l'équilibreur :

javascript
const server = app.listen(3000)
// Doit être plus long que le délai d'inactivité du load balancer (ALB par défaut : 60 s)
server.keepAliveTimeout = 65_000
server.headersTimeout = 66_000 // nécessaire seulement avant Node 18 ; sans effet gênant ensuite

Erreur 502 Bad Gateway sur Cloudflare

Derrière Cloudflare, regardez d'abord qui a généré la page d'erreur (guide 502/504 de Cloudflare) :

  • Page aux couleurs de Cloudflare (Browser ✓ / Cloudflare ✓ / Host ✗) : votre serveur d'origine lui-même a renvoyé une 502 ou une 504 à Cloudflare. Corrigez-le côté origine avec les étapes serveur ci-dessus. Si Cloudflare ne peut pas du tout se connecter à l'origine, vous obtenez une 521 ou une 522, pas une 502.
  • Une page simple indiquant « 502 Bad Gateway » avec « cloudflare » en dessous : elle vient de Cloudflare lui-même. La documentation de Cloudflare cite deux causes : votre origine envoie du contenu gzip corrompu, ou du contenu gzip sans Content-Length mis à jour (désactivez la compression côté origine pour tester), et un pic soudain de trafic sur un datacenter Cloudflare, qui passe tout seul.
  • Une page citant nginx ou Apache : la requête a généralement atteint votre serveur sans passer par Cloudflare, parce que l'enregistrement DNS n'est pas proxifié (nuage gris) ou que vous consultez directement l'origine (sauf si une Cache Rule active « Origin error page pass-through »).
  • Changement d'hébergeur ? Mettez à jour l'enregistrement A de l'origine dans le DNS de Cloudflare (une mauvaise IP d'origine s'affiche généralement en 521, 522 ou 523). Une Recherche DNS ne montre l'origine que pour les enregistrements en nuage gris (DNS only) ; les enregistrements proxifiés répondent avec les IP de Cloudflare.

Une erreur 502 nuit-elle au SEO ?

Une courte interruption, non. La documentation de Google indique que les erreurs serveur 5xx poussent ses robots à ralentir temporairement l'exploration. Les pages déjà indexées restent d'abord dans l'index, mais si les erreurs persistent, Google finit par retirer ces URL.

Une 502 de quelques minutes pendant un déploiement est donc sans conséquence. Une 502 sur des pages importantes qui dure des jours, ou qui apparaît par intermittence pendant des semaines, peut réduire l'exploration et coûter des positions. Surveillez vos URL clés, et consultez le rapport Statistiques sur l'exploration de la Search Console après toute panne.

Le site renvoie-t-il une 502 pour tout le monde ?

Le vérificateur d'en-têtes HTTP de DNS Robot demande n'importe quelle URL depuis nos serveurs et affiche le code de statut exact, le logiciel serveur et chaque en-tête de réponse. C'est le moyen le plus rapide de confirmer une 502.

Sources

  1. RFC 9110 §15.6.3: 502 Bad Gateway, IETF
  2. ngx_http_proxy_module (proxy_buffer_size), nginx
  3. Error 502 bad gateway or error 504 gateway timeout, Cloudflare
  4. HTTP status codes and Google's crawlers, Google

Questions fréquemment posées

Que signifie 502 Bad Gateway ?

Cela signifie que le serveur que vous avez atteint est une passerelle ou un proxy, comme nginx, Cloudflare ou un load balancer, et qu'il a reçu une réponse invalide du serveur d'application situé derrière lui. Le proxy fonctionne ; l'application derrière lui est arrêtée, a planté, est injoignable, ou a envoyé une réponse que le proxy ne pouvait pas exploiter.

Une erreur 502 Bad Gateway est-elle de ma faute ?

Presque jamais. Une 502 est une erreur côté serveur. Rechargez au bout d'une minute et vérifiez avec un vérificateur de site en panne si le site est hors ligne pour tout le monde. Les rares causes locales sont votre propre VPN ou proxy, un enregistrement DNS obsolète après un changement d'hébergeur du site, ou les cookies de ce site ; un autre navigateur ou les données mobiles permettent de les écarter.

Combien de temps dure une erreur 502 Bad Gateway ?

Il n'y a pas de durée fixe. Une 502 causée par un déploiement ou un redémarrage disparaît généralement en quelques secondes à quelques minutes. Si elle dure plus longtemps, l'application en amont a planté ou est mal configurée, et elle reste hors service jusqu'à ce que le propriétaire du site la répare.

Que signifie 502 Bad Gateway nginx ?

nginx est le proxy qui a répondu, et il n'a pas obtenu de réponse valide de l'application à laquelle il transmet les requêtes, comme PHP-FPM ou une application Node.js. La raison exacte se trouve dans le journal d'erreurs de nginx, généralement /var/log/nginx/error.log.

Quelle est la différence entre une erreur 502 et une erreur 504 ?

502 Bad Gateway signifie que le proxy n'a pas pu se connecter au serveur en amont, ou que celui-ci a fermé la connexion ou renvoyé une réponse invalide. 504 Gateway Timeout signifie que le serveur en amont n'a pas répondu dans le délai imparti par le proxy. Une 502 évoque un plantage ou une mauvaise configuration ; une 504, de la lenteur.

Un VPN ou un proxy peut-il provoquer une erreur 502 ?

Oui, si votre propre VPN ou le proxy de votre entreprise est la passerelle qui échoue. Dans ce cas, l'erreur apparaît sur tous les sites, ou seulement quand le VPN est activé. Déconnectez-le et rechargez. Si la 502 disparaît, le problème vient de votre VPN ou de votre proxy, pas du site web.

Comment corriger une erreur 502 Bad Gateway sur Cloudflare ?

Regardez la page d'erreur. Une page aux couleurs de Cloudflare avec Host en échec signifie que votre serveur d'origine lui-même a renvoyé la 502 : suivez les étapes côté serveur (journal d'erreurs, application en marche, proxy_pass). Une page simple indiquant « 502 Bad Gateway » avec « cloudflare » en dessous vient de Cloudflare lui-même : sa documentation cite un gzip corrompu venant de l'origine et de brefs déplacements de trafic entre datacenters.

Pourquoi ai-je une 502 sur une seule page de mon site ?

Quand l'essentiel d'un site fonctionne et qu'une seule page renvoie une 502, cherchez ce qui distingue cette page : des en-têtes de réponse ou des valeurs Set-Cookie qui débordent du tampon du proxy, ou un chemin de code qui fait planter l'application ou la met à court de mémoire (une requête très lente donne une 504, pas une 502). Le journal d'erreurs du proxy nomme la cause, par exemple upstream sent too big header.

Une erreur 502 affecte-t-elle le SEO ?

Les courtes coupures en 502, non. Google ralentit l'exploration quand il rencontre des erreurs 5xx et conserve un temps les pages indexées. Des 502 persistantes sur des pages importantes peuvent amener Google à retirer ces URL de l'index : corrigez donc rapidement les erreurs qui durent.

À propos de l’auteur

Shaik Vahid

Fondateur de DNS Robot. Vahid a passé des années au support d’hébergement web à réparer les domaines, les enregistrements DNS, les certificats SSL et la distribution des e-mails de clients. Il développe les outils de DNS Robot et écrit ces guides à partir des erreurs que les gens rencontrent vraiment.

Vérificateur d'en-têtes HTTP

Analysez les en-têtes de réponse HTTP et la notation des en-têtes de sécurité