ITFabricLab ouvre bientôt : les labs, simulations et examens ne sont pas encore accessibles. Vous pouvez parcourir le catalogue et créer votre compte pour être prévenu de l'ouverture.
Sévérité : ÉlevéeNGINX

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

  1. tail -f /var/log/nginx/error.log : le message précise la cause.
  2. Le backend écoute-t-il ? ss -tlnp | grep 8000.
  3. Tester le backend en direct : curl -sv http://127.0.0.1:8000/health.
  4. 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.