HTTP 502 Bad Gateway : causes et solutions
Vous essayez d'accéder à un site web et le message d'erreur « 502 Bad Gateway » s'affiche. La page ne se charge pas et vous ne voyez qu'un message d'erreur. Dans ce guide détaillé, nous expliquons ce que signifie exactement une erreur 502, quelles en sont les causes possibles et comment la résoudre en tant que visiteur ou en tant que propriétaire du site.
Qu'est-ce qu'une erreur HTTP 502 Bad Gateway ?
Le code d'état HTTP 502 signifie qu'un serveur faisant office de passerelle ou proxy a reçu une réponse invalide d'un serveur en amont. En termes simples : plusieurs serveurs se trouvent entre vous et le site web, et la communication entre ces serveurs a échoué.
Dans une configuration d'hébergement web typique, cela fonctionne ainsi :
- Votre navigateur envoie une requête au serveur web (Nginx ou Apache)
- Le serveur web transmet la requête au serveur d'application (PHP-FPM)
- PHP-FPM traite la page et renvoie le résultat au serveur web
- Le serveur web envoie la page à votre navigateur
Une erreur 502 survient lorsque l'étape 3 échoue : PHP-FPM plante, renvoie une réponse invalide ou ne répond pas du tout. Le serveur web (la passerelle) ne peut alors pas mener la requête à bien.
C'est différent d'une erreur 500 (erreur interne du serveur dans PHP) ou d'une erreur 503 (serveur surchargé). Avec une 502, il s'agit spécifiquement de la communication entre deux serveurs.
Variantes de l'erreur 502
Le message d'erreur 502 peut apparaître sous différentes formes. Dès que vous voyez le code 502, vous savez que ce guide s'applique.
| Message d'erreur | Description |
|---|---|
| 502 Bad Gateway | Variante la plus courante |
| HTTP Error 502 | Message d'erreur HTTP standard |
| 502 Proxy Error | Variante liée au proxy |
| 502 Server Error | Variante abrégée |
| 502 Bad Gateway - nginx | Variante propre à Nginx |
| 502 Bad Gateway - Cloudflare | Variante liée au CDN |
| 502. That's an error. | Affichage propre à Google |
| Bad Gateway : The proxy server received an invalid response | Variante Apache détaillée |
Résoudre une erreur 502 en tant que visiteur
En tant que visiteur, vos possibilités sont limitées, mais vous pouvez essayer ce qui suit :
- Actualisez la page: appuyez sur F5 ou Ctrl+R. Une erreur 502 est souvent temporaire.
- Attendez 30 secondes à une minute: le serveur redémarre peut-être automatiquement.
- Videz le cache de votre navigateur: il arrive qu'une ancienne réponse 502 soit affichée depuis le cache.
- Essayez un autre DNS: passez à Google DNS (8.8.8.8) ou Cloudflare DNS (1.1.1.1).
- Consultez downdetector.nl: vérifiez si d'autres utilisateurs signalent le même problème.
Résoudre une erreur 502 en tant que propriétaire du site
Vous êtes le propriétaire du site web ? Suivez alors ces 8 étapes pour trouver la cause et la corriger.
1. Vérifiez que PHP-FPM fonctionne
La cause la plus fréquente d'une erreur 502 est que PHP-FPM a planté ou ne répond plus. Vérifiez son état :
sudo systemctl status php8.2-fpm
Si PHP-FPM est arrêté, redémarrez-le :
sudo systemctl restart php8.2-fpm
Sur un hébergement mutualisé, vous ne pouvez pas redémarrer PHP-FPM vous-même. Dans ce cas, contactez votre hébergeur ou attendez que le serveur se rétablisse automatiquement.
2. Consultez le journal d'erreurs de Nginx ou d'Apache
Le journal d'erreurs du serveur web vous indique précisément pourquoi la requête a échoué :
# Nginx error log
sudo tail -50 /var/log/nginx/error.log
# Apache error log
sudo tail -50 /var/log/apache2/error.log
Cherchez les lignes contenant « 502 » ou « upstream » : elles vous disent exactement quel serveur en amont n'a pas répondu et pourquoi.
Lignes de journal fréquentes :
upstream prematurely closed connection while reading response header
connect() to unix:/run/php/php8.2-fpm.sock failed (111: Connection refused)
upstream timed out (110: Connection timed out) while reading response header
3. Augmentez le délai d'attente du proxy
Si votre site effectue des opérations lourdes (grosses requêtes de base de données, traitement d'images, imports), il se peut que le serveur web n'attende pas assez longtemps PHP-FPM.
Configuration Nginx :
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;
Configuration Apache :
ProxyTimeout 300
Timeout 300
Après la modification, redémarrez le serveur web :
sudo systemctl restart nginx # of apache2
4. Vérifiez les limites de mémoire et de processus de PHP
PHP-FPM peut planter s'il manque de mémoire ou s'il tente de faire tourner trop de processus :
Vérifiez la configuration du pool PHP-FPM :
# Meestal in /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
Si pm.max_children est trop bas pour votre trafic, PHP-FPM ne peut plus accepter de nouvelles requêtes. Augmentez cette valeur ou passez à pm = ondemand si votre trafic est variable.
Vérifiez aussi, dans php.ini, la limite de mémoire PHP :
memory_limit = 512M
5. Testez sans CDN ni reverse proxy
Si vous utilisez Cloudflare, Sucuri ou un autre CDN/proxy, le problème peut venir de là :
- Désactivez temporairement le CDN (faites pointer le DNS directement vers votre serveur)
- Consultez le tableau de bord du CDN pour repérer des messages d'erreur
- Chez Cloudflare : vérifiez que le mode SSL est correct (Full ou Full Strict)
- Testez si votre site fonctionne via l'adresse IP directe du serveur
Si votre site fonctionne bien sans CDN, le problème se situe dans la configuration du CDN.
6. Vérifiez les paramètres DNS
De mauvais paramètres DNS peuvent faire pointer votre nom de domaine vers le mauvais serveur, ce qui entraîne une erreur 502 :
- Vérifiez que votre enregistrement A pointe vers la bonne adresse IP du serveur
- Après une modification DNS, attendez 24-48 heures pour une propagation complète
- Utilisez
dig example.nlounslookup example.nlpour contrôler votre DNS
7. Redémarrez le serveur
Si redémarrer les services un par un ne suffit pas, un redémarrage complet du serveur peut être nécessaire. Cela résout les problèmes de processus bloqués, de fuites de mémoire ou de fichiers temporaires corrompus.
Sur un VPS ou un serveur dédié :
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm
sudo systemctl restart mysql
Of een volledige herstart:
sudo reboot
Sur un hébergement mutualisé : contactez votre hébergeur pour un redémarrage.
8. Vérifications propres à WordPress
Sur les sites WordPress, ces causes supplémentaires peuvent jouer un rôle :
- Extensions lourdes: désactivez les extensions récemment installées ou mises à jour
- Surcharge de WP-Cron: désactivez WP-Cron et utilisez une vraie tâche cron du serveur
- Conflit de cache objet: si vous utilisez Redis ou Memcached, vérifiez que le service de cache fonctionne
- API Heartbeat: limitez l'API Heartbeat de WordPress avec l'extension Heartbeat Control
Prévenir les erreurs 502
Avec ces mesures, vous réduisez au minimum le risque d'erreurs 502 :
- Surveillez votre serveur: mettez en place une surveillance de disponibilité avec des outils comme UptimeRobot ou Pingdom
- Adaptez votre hébergement: veillez à ce que votre offre d'hébergement dispose de ressources suffisantes pour votre trafic
- Optimisez votre code: veillez à des requêtes de base de données efficaces et évitez les opérations lourdes au chargement des pages
- Utilisez la mise en cache: un cache bien configuré (Redis, Varnish ou cache de page) réduit la charge sur PHP-FPM
- Tenez vos logiciels à jour: utilisez la dernière version de PHP et gardez votre CMS et vos extensions à jour
- Configurez le redémarrage automatique: réglez systemd pour qu'il redémarre automatiquement PHP-FPM en cas de plantage
Questions fréquentes sur l'erreur 502
Que signifie exactement HTTP 502 Bad Gateway ?
Une erreur 502 Bad Gateway signifie qu'un serveur intermédiaire (passerelle ou proxy) a reçu une réponse invalide ou incomplète du serveur situé derrière lui. Le problème ne vient pas de votre navigateur ni de votre connexion, mais de la communication entre deux serveurs. Le plus souvent, il s'agit d'un serveur web (Nginx/Apache) qui ne reçoit pas de réponse valide de PHP-FPM.
Quelle est la différence entre une erreur 502 et une erreur 504 ?
Avec une erreur 502, la passerelle reçoit une réponse invalide du serveur en amont. Avec une 504 Gateway Timeout, la passerelle ne reçoit aucune réponse dans le délai fixé. Une 502 indique un plantage ou une erreur, une 504 un dépassement de délai. Les solutions se recoupent, mais pour une 504, il faut surtout augmenter les délais d'attente.
Une erreur 502 peut-elle venir de mon hébergeur ?
Oui, sur un hébergement mutualisé, une erreur 502 peut être causée par des problèmes de serveur sur lesquels vous n'avez aucune prise. Si le problème persiste alors que vous avez suivi toutes les étapes, contactez votre hébergeur. En cas d'erreurs 502 à répétition, envisagez de passer à un VPS pour plus de contrôle et des ressources dédiées.
Une erreur 502 a-t-elle un impact sur mon SEO ?
Une erreur 502 isolée et brève n'a quasiment aucun impact sur votre SEO. En revanche, si Google rencontre une 502 à plusieurs reprises en explorant vos pages, cela peut réduire la fréquence d'exploration et, à terme, faire baisser votre site dans les résultats de recherche. Surveillez votre site avec Google Search Console pour être rapidement informé des problèmes d'exploration.
Combien de temps dure généralement une erreur 502 ?
Cela dépend de la cause. Si PHP-FPM redémarre automatiquement, une erreur 502 peut être résolue en moins de 30 secondes. En cas de problème de serveur ou d'erreur de configuration, cela peut prendre plus de temps, jusqu'à ce que l'administrateur intervienne. Sur des serveurs bien configurés, les plantages de PHP-FPM sont détectés et redémarrés automatiquement, ce qui réduit l'indisponibilité au minimum.
Des erreurs 502 à répétition ? Voir nos offres d'hébergement web avec LiteSpeed, SSD NVMe et une configuration PHP-FPM stable. Ou optez pour un VPS avec un contrôle total sur la configuration de votre serveur.
0 sur 0 ont trouvé cet article utile