Les codes HTTP sont le langage universel de diagnostic du web. Apprenez à distinguer instantanément si un problème provient de la requête du visiteur (4xx), du code applicatif (500) ou de la passerelle Nginx vers le processus Node (502/504).
Le client a envoyé une requête invalide, non autorisée ou demandant une URL inexistante.
Une exception non gérée s'est produite dans le code TypeScript/JavaScript du backend.
Nginx est opérationnel mais ne parvient pas à joindre le processus Node sur le port 3000.
Node ou la base de données a mis plus de 60 secondes à répondre à la requête.
# 1. Reproduire l'erreur avec curl en affichant le statut HTTP exact
$ curl -s -o /dev/null -w "Statut HTTP: %{http_code}
" https://api.learnweb.com/api/v1/orders
Statut HTTP: 502
# 2. Diagnostiquer l'erreur 502 dans le journal Nginx
$ sudo tail -n 5 /var/log/nginx/error.log
2026/10/11 15:40:12 [error] 1024#1024: *120 connect() failed (111: Connection refused)
while connecting to upstream, client: 198.51.100.42, server: api.learnweb.com,
request: "GET /api/v1/orders HTTP/1.1", upstream: "http://127.0.0.1:3000/api/v1/orders"
# 🚨 Cause immédiate : le processus Node.js sur le port 3000 est ÉTEINT ou a crashé !
# 3. Vérifier l'état du processus avec PM2
$ pm2 status
# Si l'API est en statut "errored" ou "stopped" :
$ pm2 logs learnweb-api --err --lines 20
$ pm2 restart learnweb-apiundefined, un try/catch manque).learnweb.com/dashboard renvoie une 404 Nginx brute : Ce n'est pas un bug de votre code JavaScript : c'est simplement l'oubli de la directive try_files $uri $uri/ /index.html; dans votre configuration Nginx. Nginx cherchait un vrai dossier sur le disque au lieu de déléguer au routeur client !
| Code HTTP | Nom Officiel | Cause Réelle en Production | Action Immédiate de Dépannage |
|---|---|---|---|
| 400 | Bad Request | Schéma de données non conforme (ex: validation Zod échouée) | Inspecter le payload JSON envoyé dans l'onglet Réseau (F12) |
| 401 | Unauthorized | Token JWT absent, malformé ou expiré | Rediriger l'utilisateur vers la page de reconnexion /login |
| 403 | Forbidden | Token valide mais rôle insuffisant ou IP bloquée par WAF | Vérifier les droits de l'utilisateur ou la règle de sécurité |
| 500 | Internal Server Error | Exception JavaScript non capturée dans le code de l'API | Consulter pm2 logs pour voir la trace d'erreur (Stack Trace) |
| 502 | Bad Gateway | Processus Node.js non démarré sur le port interne 3000 | Démarrer ou redémarrer le service avec pm2 restart learnweb-api |
| 504 | Gateway Timeout | Requête de BDD trop longue ou API externe bloquée | Optimiser les index MySQL ou augmenter proxy_read_timeout |