Quand votre proxy reçoit une réponse invalide du serveur upstream
L'erreur HTTP 502 "Bad Gateway" est un code de statut indiquant qu'un serveur agissant comme passerelle ou proxy a reçu une réponse invalide du serveur upstream vers lequel il transmettait la requête. C'est l'une des erreurs 5xx les plus fréquentes dans les architectures modernes utilisant des reverse proxies, load balancers ou CDN.
Contrairement au 504 (Gateway Timeout) où le serveur upstream ne répond pas du tout, le 502 signifie que le serveur a bien reçu une réponse, mais que cette réponse était invalide ou incompréhensible. Cela peut provenir d'un crash de l'application, d'une réponse HTTP mal formée, ou d'une fermeture de connexion inattendue.
Pour les équipes DevOps et les administrateurs système, comprendre et résoudre rapidement les erreurs 502 est crucial. MoniTao surveille vos endpoints en continu et vous alerte dès qu'une erreur 502 est détectée, permettant une intervention rapide avant que vos utilisateurs ne soient impactés massivement.
L'erreur 502 peut avoir de nombreuses origines, toutes liées à la communication entre le proxy et le serveur backend :
Comprendre où se situe le proxy dans votre stack permet de mieux diagnostiquer l'origine du 502 :
Un diagnostic méthodique permet d'identifier rapidement la cause du 502 :
Une bonne configuration des timeouts et du nombre de connexions prévient de nombreux 502 :
# /etc/nginx/nginx.conf
upstream php_backend {
server unix:/var/run/php/php8.2-fpm.sock;
keepalive 32; # Pool de connexions persistantes
}
server {
location ~ \.php$ {
fastcgi_pass php_backend;
fastcgi_connect_timeout 60s;
fastcgi_send_timeout 60s;
fastcgi_read_timeout 60s;
# Buffer pour éviter les réponses tronquées
fastcgi_buffer_size 32k;
fastcgi_buffers 8 16k;
# Réessayer sur un autre backend si disponible
fastcgi_next_upstream error timeout;
fastcgi_next_upstream_tries 2;
}
}
Cette configuration établit un pool de connexions keepalive vers PHP-FPM, définit des timeouts adaptés, et configure des buffers suffisants pour éviter les réponses tronquées.
MoniTao offre plusieurs fonctionnalités pour détecter et réagir aux erreurs 502 :
Le 502 Bad Gateway indique une réponse invalide du backend (le backend a répondu mais mal). Le 503 Service Unavailable indique que le service est temporairement indisponible (surcharge, maintenance). Le 502 pointe vers un problème de communication, le 503 vers un problème de capacité.
Les 502 intermittents sont souvent liés à la charge : sous forte pression, certaines requêtes dépassent le timeout ou épuisent les workers disponibles. Cela peut aussi indiquer un memory leak dans l'application qui cause des crashes aléatoires.
Le CDN ne peut pas atteindre votre serveur d'origine correctement. Vérifiez les règles firewall (le CDN utilise des IP spécifiques), les certificats SSL si le CDN se connecte en HTTPS, et les timeouts côté CDN qui peuvent être plus courts.
Augmentez les directives proxy_connect_timeout, proxy_send_timeout et proxy_read_timeout dans votre configuration Nginx. Pour PHP-FPM, utilisez fastcgi_read_timeout. Attention : des timeouts trop longs masquent les problèmes de performance.
Pas directement, car le DNS est résolu avant la connexion TCP. Cependant, si votre proxy utilise un nom de domaine pour joindre le backend et que la résolution DNS échoue ou renvoie une mauvaise IP, cela peut causer un 502.
MoniTao enregistre chaque vérification avec le code de réponse, le temps de réponse et les headers. L'historique permet d'identifier quand les 502 ont commencé, leur fréquence, et s'ils corrèlent avec des événements (déploiement, pic de trafic).
L'erreur HTTP 502 Bad Gateway est un symptôme d'un problème de communication entre votre proxy et votre backend. La résolution passe par un diagnostic méthodique : vérifier que le backend tourne, consulter les logs, tester la connexion directe, et ajuster les timeouts si nécessaire.
Avec MoniTao, vous êtes alerté dès qu'une erreur 502 survient, vous permettant d'intervenir avant que l'impact utilisateur ne devienne critique. Configurez des monitors sur vos endpoints sensibles et utilisez l'historique pour identifier les patterns récurrents.
Commencez gratuitement, sans carte bancaire.