Aller au contenu

Guide

Erreur 502 Bad Gateway : causes et solutions

Ce que signifie l’erreur 502 Bad Gateway, ses causes avec Nginx, PHP-FPM ou Cloudflare, et comment la résoudre.

L’erreur 502 « Bad Gateway » (mauvaise passerelle) apparaît quand un serveur intermédiaire, chargé de transmettre votre demande, reçoit une réponse invalide du serveur qui doit réellement fournir la page. Elle est fréquente sur les sites qui passent par un proxy, un CDN comme Cloudflare ou un serveur web Nginx devant PHP. Voici comment l’interpréter et la résoudre.

Que signifie l’erreur 502 Bad Gateway ?

Sur la plupart des sites, plusieurs serveurs se relaient : un CDN ou un proxy reçoit la demande, la transmet à un serveur web, qui la passe lui-même à l’application (PHP, Node.js, Python). La norme HTTP définit le code 502 comme la réponse d’un serveur agissant en passerelle ou en proxy qui a reçu une réponse invalide du serveur suivant.

Le message prend plusieurs formes : « 502 Bad Gateway », « 502 Bad Gateway nginx », « HTTP Error 502 », « Erreur 502 mauvaise passerelle », ou une page d’erreur aux couleurs de Cloudflare.

Vous êtes visiteur : que faire ?

  • Rechargez la page après quelques secondes : beaucoup d’erreurs 502 sont passagères, par exemple pendant le redémarrage d’un service.
  • Essayez un autre navigateur ou la navigation privée, sans grand espoir : le problème se situe presque toujours du côté du site.
  • Redémarrez votre box uniquement si tous les sites affichent une erreur 502, ce qui peut indiquer un problème de proxy ou de DNS sur votre réseau.

Les causes côté serveur

  • L’application est arrêtée ou plantée : PHP-FPM, Node.js ou Gunicorn ne tourne plus, et Nginx ne peut rien lui transmettre.
  • Tous les processus sont occupés : PHP-FPM a atteint son nombre maximal de processus pendant un pic de trafic.
  • La réponse est trop longue ou malformée : en-têtes trop volumineux, script qui s’interrompt brutalement.
  • Le serveur d’origine est injoignable pour le CDN : pare-feu qui bloque les adresses du CDN, serveur éteint, mauvaise adresse IP dans le DNS.
  • Un délai d’attente est dépassé entre deux serveurs ; selon les configurations, cela produit une 502 ou une 504.

Résoudre une erreur 502 avec Nginx et PHP-FPM

  1. Lire le journal Nginx : tail -n 50 /var/log/nginx/error.log. Des messages comme « connect() failed », « upstream prematurely closed connection » ou « no live upstreams » orientent le diagnostic.
  2. Vérifier que PHP-FPM tourne : systemctl status php8.3-fpm (adaptez à votre version), puis le redémarrer si besoin.
  3. Vérifier le socket ou le port : l’adresse indiquée dans fastcgi_pass doit correspondre à celle sur laquelle écoute PHP-FPM.
  4. Ajuster le nombre de processus PHP-FPM (pm.max_children) si le journal PHP-FPM signale qu’il est atteint, en restant dans les limites de la mémoire disponible.
  5. Allonger les délais pour les traitements longs (fastcgi_read_timeout, ou proxy_read_timeout pour un proxy), sans masquer un script réellement bloqué.

Erreur 502 avec Cloudflare

Si la page d’erreur porte le logo de Cloudflare et indique que le serveur d’origine ne répond pas correctement, le problème se situe entre Cloudflare et votre hébergement. Vérifiez que le serveur d’origine fonctionne en l’interrogeant directement, que son pare-feu n’exclut pas les adresses de Cloudflare et que l’adresse IP renseignée dans la zone DNS est la bonne.

Prévenir les erreurs 502

  • Surveillez la disponibilité du site et la mémoire du serveur pour être alerté avant les visiteurs.
  • Dimensionnez le serveur en fonction du trafic réel : un serveur à court de mémoire tue ou refuse des processus. Voir combien de RAM pour un serveur dédié.
  • Activez un cache de pages pour limiter le nombre de requêtes qui atteignent PHP.

Si les erreurs reviennent à chaque pic de trafic sur un hébergement mutualisé, il est peut-être temps de passer à un VPS ou à un serveur dédié : notre comparateur présente des offres datées et sourcées.

502, 503, 504 : les différences

Code Ce qui se passe
502 Bad Gateway Le serveur intermédiaire reçoit une réponse invalide.
503 Service Unavailable Le serveur refuse temporairement de répondre (surcharge, maintenance).
504 Gateway Timeout Le serveur intermédiaire n’obtient pas de réponse dans le délai imparti.
500 Internal Server Error L’application elle-même a planté.

Tous les codes sont expliqués dans notre page codes d’erreur HTTP.

Sources