Risolvere gli errori 502 Bad Gateway di Nginx: Guida passo dopo passo

Questa guida completa illustra le cause comuni degli errori 502 di Nginx, inclusi i problemi di configurazione del proxy, e fornisce passaggi chiari e pratici per diagnosticarli e risolverli rapidamente.

L'errore 502 Bad Gateway è uno dei problemi più comuni che si riscontrano quando si utilizza Nginx come reverse proxy. In sostanza, significa che Nginx ha ricevuto una risposta non valida dal server a monte (upstream), come PHP-FPM, Gunicorn o Node.js.

Cause comuni

  1. Il servizio a monte è inattivo: Il processo che dovrebbe gestire la richiesta non è in esecuzione.
  2. Configurazione errata del proxy: Nginx sta cercando di connettersi a un socket o a una porta sbagliata.
  3. Timeout: Il server a monte impiega troppo tempo per rispondere.
  4. Limiti di risorse: Il server ha esaurito la memoria o i descrittori di file.

Passaggi per la risoluzione dei problemi

1. Controlla lo stato del servizio a monte

Assicurati che il tuo backend sia attivo. Ad esempio, se usi PHP-FPM:

sudo systemctl status php8.2-fpm

2. Esamina i log di errore di Nginx

I log sono i tuoi migliori alleati. Controlla il file di log degli errori per vedere esattamente cosa sta succedendo:

sudo tail -f /var/log/nginx/error.log

3. Verifica la configurazione del proxy

Controlla il tuo file di configurazione di Nginx (/etc/nginx/sites-available/default) e assicurati che la direttiva fastcgi_pass o proxy_pass punti al socket o alla porta corretti.

4. Aumenta i timeout

Se il tuo script richiede molto tempo per essere eseguito, potresti dover aumentare i timeout nel tuo blocco location:

proxy_read_timeout 300;
proxy_connect_timeout 300;

Dopo aver apportato le modifiche, non dimenticare di testare la configurazione e riavviare Nginx:

sudo nginx -t
sudo systemctl restart nginx