502 Bad Gateway : le serveur n’a pas répondu, et voici pourquoi

Votre site affiche « 502 Bad Gateway » et vous ne comprenez pas : il fonctionnait il y a une heure. Bonne nouvelle, cette erreur n’est presque jamais liée à votre contenu WordPress. Vos articles, vos pages et votre base de données sont intacts. Le problème se situe dans la communication entre deux serveurs.

Concrètement, quand vous chargez une page WordPress, une chaîne de serveurs se relaie : un serveur frontal (souvent Nginx ou un proxy comme Cloudflare) reçoit la requête, puis la transmet à un serveur applicatif (PHP-FPM) qui exécute WordPress. Une 502 signifie que le serveur frontal a bien reçu votre demande, l’a transmise… mais la réponse renvoyée était invalide ou absente. La « passerelle » (gateway) a reçu une mauvaise réponse. D’où le nom.

C’est différent d’une erreur 500, où le serveur exécute votre code et plante à l’intérieur de WordPress. Ici, souvent, PHP n’a même pas fini de répondre. La distinction oriente le diagnostic : sur une 502, on regarde d’abord le serveur et le réseau, pas les plugins.

Pourquoi ça arrive : les causes fréquentes


1. Attendez, puis rechargez (vraiment)

Une 502 est souvent temporaire. Un pic de trafic, un redémarrage de service, une maintenance côté hébergeur : le temps de lire cette phrase, le problème peut déjà être résolu.

Attendez 30 secondes, videz le cache de votre navigateur (Ctrl+Shift+R ou Cmd+Shift+R), puis rechargez. Testez aussi depuis votre téléphone en 4G, hors Wi-Fi : si le site revient sur mobile mais pas sur votre poste, c’est un cache local, pas le serveur. Si la 502 persiste sur tous les appareils au-delà de deux ou trois minutes, passez à la suite.


2. Contournez Cloudflare pour isoler la source

Si vous utilisez Cloudflare (ou un autre proxy/CDN), la première question est : l’erreur vient-elle de votre serveur, ou de la couche Cloudflare ?

Le test : mettez temporairement Cloudflare en mode « pause » (dans le tableau de bord Cloudflare, OverviewAdvanced ActionsPause Cloudflare on Site). Vos visiteurs tapent alors directement sur votre serveur d’origine, sans intermédiaire.

Réactivez Cloudflare une fois le diagnostic posé.


3. Lisez les logs serveur

C’est la source de vérité. Une 502 laisse toujours une trace côté serveur, généralement dans les logs de Nginx et de PHP-FPM.

Où les trouver :

Ce que vous cherchez : des lignes comme upstream prematurely closed connection ou connect() failed (PHP-FPM injoignable), ou pool ... server reached max_children (toutes les instances PHP occupées). Si vous n’avez pas encore d’accès terminal, le guide se connecter en SSH chez Gandi vous donne la procédure complète.


4. Redémarrez ou redimensionnez PHP-FPM

Si les logs pointent vers PHP-FPM, deux leviers.

Redémarrer le service (si vous avez un serveur dédié ou un VPS) :

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

Adaptez php8.2 à votre version. Sur un hébergement mutualisé, vous n’avez pas cet accès : demandez le redémarrage au support, ou changez de version PHP dans le panel (ce qui force un redémarrage du pool).

Augmenter le nombre de workers : si le message est max_children reached, votre serveur n’a pas assez d’instances PHP pour absorber le trafic. Dans le fichier de configuration du pool (www.conf), augmentez pm.max_children — mais prudemment, chaque worker consomme de la RAM. Sur un mutualisé, c’est un signal qu’il faut monter en gamme d’hébergement.


5. Réglez les timeouts et les directives PHP

Quand un script WordPress est lent, le proxy abandonne avant que PHP ait fini : 502. Deux réglages doivent être cohérents entre eux — le délai côté PHP et le délai côté serveur frontal.

DirectiveRôleSymptôme si trop basseValeur de départ
max_execution_timeDurée max d’exécution d’un script PHP502/504 sur import, sauvegarde, cron120
max_input_timeTemps max pour recevoir les données d’une requêteErreur sur upload lourd120
memory_limitRAM allouée par script PHPWorker tué, 502 sous charge256M
request_terminate_timeout (PHP-FPM)Délai avant que FPM tue un script bloquéWorkers saturés en boucle120s
fastcgi_read_timeout (Nginx)Délai d’attente de la réponse PHP par Nginx502 sur pages lentes120s

Où régler quoi :

La règle d’or : le timeout du frontal (Nginx) doit être supérieur ou égal à celui de PHP. Sinon Nginx coupe avant que PHP ait le temps de finir proprement. Pour le détail complet de chaque directive PHP et les quatre endroits où les modifier, voir le guide directives PHP WordPress.


6. Neutralisez un plugin ou un thème qui boucle

Si la 502 est apparue juste après l’activation ou la mise à jour d’un plugin, c’est probablement lui. Un plugin qui appelle une API externe injoignable, ou qui exécute une requête base de données monstrueuse, peut bloquer un worker PHP jusqu’au timeout.

Comme l’admin est souvent inaccessible en pleine 502, procédez par FTP/SFTP : dans wp-content/, renommez le dossier plugins en plugins_off, puis rechargez. Si le site revient, remettez plugins, entrez dedans, et désactivez les plugins un par un (en les renommant) jusqu’à identifier le coupable. Même logique pour le thème via wp-content/themes/.


Tableau récapitulatif : cause → solution

Cause probablePremier testSolution
Pic temporaireRecharger après 30 sSouvent auto-résolu
Couche CloudflarePause CloudflareVérifier SSL + timeout origine
PHP-FPM tombéLire logs FPMRedémarrer le service
Workers saturésmax_children reachedAugmenter pm.max_children ou monter en gamme
Script lentLogs upstream timeoutAligner timeouts Nginx/PHP
Plugin en boucleRenommer plugins en FTPRéactiver un par un

502 et 504, c'est la même chose ?

Non, mais elles sont cousines. Une 504 Gateway Timeout signifie que le serveur frontal a attendu la réponse de PHP et que le délai a expiré (le script était juste trop lent). Une 502 signifie que la réponse reçue était invalide ou que le service applicatif ne répondait pas du tout (crash, connexion refusée). En pratique, les solutions se recoupent beaucoup : timeouts, ressources serveur, plugin lent.

Le site marche pour moi mais pas pour mes visiteurs (ou l'inverse) — pourquoi ?

C’est typique d’un problème de cache ou de propagation. Si vous voyez le site et pas eux, votre navigateur a peut-être servi une version en cache. Si eux le voient et pas vous, c’est probablement un cache local ou un souci DNS de votre côté. Testez toujours en navigation privée et depuis un réseau différent pour trancher.

Est-ce que je risque de perdre des données pendant une 502 ?

Non. Une 502 est une erreur de communication réseau, pas une corruption. Votre base de données et vos fichiers ne sont pas touchés. Les seules données à risque sont celles d’un formulaire qu’un visiteur soumettait au moment exact du plantage — d’où l’intérêt de fiabiliser l’infrastructure quand les 502 se répètent.

Les 502 reviennent tous les jours à la même heure — que faire ?

Une 502 récurrente à heure fixe trahit presque toujours une tâche planifiée gourmande : sauvegarde automatique, cron WordPress, synchronisation d’un plugin. Repérez l’heure dans les logs, identifiez le script qui tourne à ce moment-là, et décalez-le en dehors des pics de trafic — ou allégez-le. Si votre site est globalement lent, le guide site WordPress lent traite le diagnostic de fond.


Quand passer la main à un pro

Une 502 qui persiste après avoir vérifié Cloudflare, les logs et PHP-FPM signale souvent un problème d’infrastructure : hébergement sous-dimensionné, configuration serveur bancale, ressources partagées saturées. À ce stade, s’acharner coûte plus cher que de déléguer. Un prestataire accède à la configuration serveur complète et identifie en quelques minutes si le problème vient de votre hébergement ou de votre application. Et si vous découvrez au passage que vous n’avez pas accès à votre propre serveur, lisez sans attendre les 7 accès à exiger de votre agence. Une 502, ça se règle — encore faut-il avoir la main sur l’infrastructure.

Ce problème, Peechy s'en occupe

Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout — hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.

Confier mon site à Peechy