HTTP 504 Gateway Timeout
L'intermediario ha smesso di aspettare: il server upstream non ha risposto entro il limite di tempo del proxy.
Cosa significa HTTP 504
HTTP 504 Gateway Timeout viene emesso da un proxy, un load balancer o una CDN la cui richiesta al server upstream non ha ricevuto risposta entro il proprio timeout. A differenza del 502 — dove l'upstream ha risposto male — con 504 non ha risposto affatto in tempo.
La causa profonda è quasi sempre qualcosa di lento dietro le quinte: una query al database costosa, un'API esterna che non risponde, o un pool di thread dell'applicazione sotto pressione per il carico.
Cause comuni degli errori 504
- Una query al database lenta o un indice mancante che fa impiegare a un endpoint più tempo di quanto il proxy consenta.
- L'applicazione che attende un'API esterna che è essa stessa lenta o inattiva.
- Backend saturo: tutti i worker occupati, richieste in coda oltre il timeout.
- Problemi di rete tra proxy e upstream (routing, perdita di pacchetti, DNS).
- Discrepanza di timeout: l'app ha legittimamente bisogno di 60s, il proxy taglia a 30s.
Come risolverlo da visitatore
- Riprova dopo un momento — un singolo 504 è spesso solo una richiesta lenta, non un'interruzione.
- Per un'azione che hai inviato (pagamento, ordine), controlla se è effettivamente andata a buon fine prima di riprovare.
Come risolverlo da sviluppatore
- Trova l'endpoint lento nei log di accesso/APM: sistema la query, aggiungi indici, metti in cache il risultato.
- Sposta i lavori lenti in job in background e rispondi rapidamente con uno stato che il client può interrogare.
- Allinea i budget di timeout end to end (app < proxy < CDN) così l'anello più lento è noto e intenzionale.
- Aggiungi circuit breaker attorno alle API esterne instabili invece di lasciare che blocchino i tuoi worker.
Esempio di risposta
HTTP/1.1 504 Gateway Timeout Server: nginx Content-Type: text/html <html><body><h1>504 Gateway Timeout</h1></body></html>
FAQ
Qual è la differenza tra 504 e 502?
504 significa che l'upstream non ha mai risposto entro il timeout; 502 significa che ha risposto con qualcosa di non valido.
Un 504 è un problema di connessione dell'utente?
No — è tra il proxy del sito e il suo backend. La rete dell'utente va bene.
La mia richiesta inviata è stata elaborata se ho ricevuto un 504?
Possibilmente sì — il timeout ha colpito la risposta, non necessariamente l'elaborazione. Controlla lo stato prima di riprovare alla cieca azioni non idempotenti.