NGINX renvoie 502 Bad Gateway
```text connect() failed (111: Connection refused) while connecting to upstream, upstream: "http://127.0.0.1:8000/" upstream prematurely closed connection while reading response header from upstream connect() to unix:/run/php/php-fpm.sock failed (13: Permission denied) ```
Détecter
Le site affiche « 502 Bad Gateway » ; les fichiers statiques servis directement par NGINX fonctionnent.
Symptômes
Le site affiche « 502 Bad Gateway » ; les fichiers statiques servis directement par NGINX fonctionnent.
Environnement
NGINX en reverse proxy vers une application (Gunicorn/Node/PHP-FPM) sur le même serveur ou un pool de backends.
Cause racine
NGINX fonctionne mais ne parvient pas à obtenir de réponse valide du backend : service arrêté ou planté, mauvais port/socket, droits sur le socket Unix, backend qui crashe pendant la requête.
Diagnostic
tail -f /var/log/nginx/error.log: le message précise la cause.- Le backend écoute-t-il ?
ss -tlnp | grep 8000. - Tester le backend en direct :
curl -sv http://127.0.0.1:8000/health. - Journaux du backend :
journalctl -u app -n 50.
Solution
Selon le message : redémarrer/corriger le backend, aligner proxy_pass sur le port réel, corriger propriétaire et mode du socket (listen.owner = www-data), augmenter la mémoire si le backend est tué par l'OOM killer.
Commandes
sudo nginx -t
ss -tlnp
curl -sv http://127.0.0.1:8000/health
journalctl -k | grep -i "killed process"
Prévention
Health checks et plusieurs backends, supervision du taux de 5xx au niveau du proxy, redémarrage automatique (Restart=on-failure), journal NGINX avec $upstream_addr et $upstream_status.