L’errore 504 Gateway Timeout è uno degli errori HTTP 5xx più frequenti per i proprietari di siti web e i loro visitatori. Per molti blog e piattaforme di ecommerce, sapere come correggere errori del server come questo è fondamentale per evitare che i loro sudatissimi visitatori rimbalzino sui siti della concorrenza.

Poiché l’errore 504 Gateway Timeout non vi svela il motivo per cui si è verificato, è difficile individuare la causa del timeout del server. Questo articolo vi aiuterà a capirlo a fondo, a imparare a diagnosticare la causa e poi a risolverla.

Dopo aver provato tutte le varie soluzioni menzionate nell’articolo, il vostro sito dovrebbe essere operativo in poco tempo.

Vi sembra interessante? Iniziamo!

Guardate la Nostra Video-Guida per Risolvere l’Errore 504 Gateway Timeout sul Vostro Sito

Per semplificare ulteriormente la definizione, questo errore si verifica quando due server sono coinvolti nell’elaborazione di una richiesta e il primo server (tipicamente il server principale) attende una risposta dal secondo server (server a monte).

Codice di errore 504 Gateway Timeout Error
Tipo di errore Lato server
Variazioni dell’errore 504 Gateway Timeout
504 Gateway Timeout NGINX
NGINX 504 Gateway Timeout
Gateway Timeout Error
Error 504
HTTP Error 504
HTTP Error 504 — Gateway Timeout
HTTP 504
504 Error
Gateway Timeout (504)
Cause dell’errore Problemi di connettività del server
Problemi di connettività di rete
Problemi di DNS
Problemi di firewall

Ecco come funziona il processo: ogni volta che visitate un sito web con il browser, quest’ultimo invia una richiesta al server web in cui è ospitato il sito. Il server elabora la richiesta e risponde con le risorse richieste.

Come funzionano le richieste e le risposte HTTP
Come funzionano le richieste e le risposte HTTP

La risposta del server include uno dei tanti codici di stato HTTP per indicare lo stato della risposta al browser. Ma non tutti questi codici di stato HTTP sono errori. Per esempio, un codice di stato 200 OK significa che il server ha elaborato la richiesta con successo e “tutto è OK”.

La classe 5xx dei codici di stato HTTP indica che c’è qualcosa che non va con il server, il server ne è consapevole e non può eseguire la richiesta del client. Per questo motivo vengono spesso definiti anche come Server Error 5xx.

Ufficialmente, cinque codici di stato sono specificati nella classe 5xx (500, 501, 502, 503, 504). Si possono trovare anche molti codici non ufficiali (come il 506, 507, 509, 520, ecc.).

L’errore 504 Gateway Timeout si manifesta in varie forme. Ecco alcune indicazioni per riconoscerlo:

L’errore 'HTTP ERROR 504' nel browser Chrome
L’errore ‘HTTP ERROR 504’ nel browser Chrome

L’errore 504 Gateway Timeout è simile all’errore 502 Bad Gateway, che indica che il primo server ha ricevuto una risposta non valida dal secondo server (server a monte).

Il codice di stato '504 GATEWAY TIMEOUT' in Chrome DevTools
Il codice di stato ‘504 GATEWAY TIMEOUT’ in Chrome DevTools

Variazioni dell’Errore 504 Gateway Timeout

Il browser visualizza i 504 Gateway Timeout, proprio come fa con qualsiasi altro errore. Vista la gran varietà di sistemi operativi, server web, browser e user agent, l’errore può essere visualizzato in diversi modi.

Di seguito riportiamo alcune comuni variazioni dei messaggi di errore 504 che potreste incontrare:

  • 504 Gateway Timeout
  • 504 Timeout Gateway NGINX
  • NGINX 504 Gateway Timeout
  • Gateway Timeout Error
  • Error 504
  • HTTP Error 504
  • HTTP Error 504 — Gateway Timeout
  • HTTP 504
  • 504 Error
  • Gateway Timeout (504)
  • This page isn’t working — Domain took too long to respond
  • 504 Gateway Time-out — The server didn’t respond in time
  • The page request was canceled because it took too long to complete
  • Site visitors: There was an issue serving your request, please try again in a few minutes.
  • Site Owners: There was a gateway timeout. You should visit your error log for more information.
  • Una schermata bianca

Tutte le risposte all’errore di cui sopra, anche se formulate in modo diverso, indicano lo stesso problema, cioè l’errore server 504 Gateway Timeout.

I server web e i siti web possono personalizzare il modo in cui mostrano l’errore 504 Gateway Timeout agli utenti e alcuni dei loro messaggi possono essere davvero carini! È un’ottima tattica per mitigare la delusione dei loro visitatori.

La pagina personalizzata di errore HTTP 504 di GitHub
La pagina personalizzata di errore HTTP 504 di GitHub

Cause dell’Errore 504 Gateway Timeout

Poiché l’errore 504 è dovuto a un timeout tra i server, il problema di solito non è dovuto al dispositivo del cliente o alla connessione internet.
Un errore 504 Gateway Timeout indica che il server web sta aspettando troppo a lungo una risposta da un altro server e quindi va in “timeout”. Ci possono essere molte ragioni per questo timeout: l’altro server non funziona correttamente, è sovraccarico o è fuori servizio.

L’altro server non deve essere sempre un server esterno (ad es. CDN, gateway API). Può anche essere un’entità simile a un server all’interno del server web principale (per es. server proxy inverso o server di database).

Impatto SEO dell’Errore 504 Gateway Timeout

Tutti gli errori 5xx impediscono il caricamento di una pagina web, peggiorando notevolmente l’esperienza utente. Per questo motivo, i motori di ricerca come Google prendono sul serio questi errori. Se l’errore persiste a lungo, può anche portare a deindicizzare la pagina web dai risultati dei motori di ricerca.

Ad esempio, quando gli spider di Google si imbattono in un errore 503 Service Unavailable, capiranno che si tratta di un problema temporaneo in quanto viene usato principalmente per attivare la modalità di manutenzione del sito. Così, proveranno a scansionare di nuovo la pagina in un secondo momento.

Un errore 504 Gateway Timeout non è necessariamente temporaneo, in quanto può essere dovuto a molteplici ragioni. Se il vostro sito è inattivo solo per pochi minuti, e gli spider stanno cercando di scansionarlo più volte ogni minuto, cercheranno di servire la pagina dalla loro cache. Non se ne accorgerebbero nemmeno.

Ma se il vostro sito è inattivo per più di 6 ore o più, allora Google considererà l’errore 504 come un grave problema a livello di sito che dovrete risolvere al più presto. Questo può avere un impatto negativo sulla vostra SEO.

Visualizzazione degli errori di scansione nella Google Search Console
Visualizzazione degli errori di scansione nella Google Search Console

Google Search Console è uno dei migliori strumenti SEO per monitorare gli errori HTTP 5xx del vostro sito web.

Come Risolvere l’Errore 504 Gateway Timeout?

Senza conoscere i dettagli esatti del sito, come la configurazione del server, il piano di hosting, i plugin di terze parti e il traffico che attira, potrebbe essere frustrante correggere un errore 504 Gateway Timeout.

Poiché sono coinvolte molte variabili, vi raccomandiamo di iniziare a risolvere i problemi prima da lato client, che sono piuttosto rari, e poi passare a risolvere i problemi lato server, che di solito sono i veri colpevoli degli errori 504.

1. Provate a Ricaricare la Pagina Web

Una delle prime cose che potete provare quando incontrate un errore 504 Gateway Timeout è aspettare qualche minuto e provare a ricaricare la pagina.

Potete usare la scorciatoia da tastiera premendo F5 per aggiornare/ricaricare la pagina web nella maggior parte dei browser. Per rimuovere la cache del browser della pagina prima di ricaricarla, potete invece premere la combinazione di tasti CTRL+F5.

Aggiornare una pagina web nel browser Chrome
Aggiornare una pagina web nel browser Chrome

Già che ci siete, potete anche provare a caricare il sito in un browser diverso per escludere che quello sia la causa del problema. Poiché la maggior parte degli errori 504 sono dovuti a server temporaneamente sovraccarichi, questa soluzione dovrebbe far tornare subito in vita il vostro sito.

Se ricaricare il sito non risolve l’errore 504, potete controllare se il sito è fuori uso per chiunque o solo per voi. I due migliori strumenti online per testare i tempi di inattività di un sito sono “Down for Everyone or Just Me” e “Is It Down Right Now”?

Test di Kinsta.com su Down for Everyone or Just Me
Test di Kinsta.com su Down for Everyone or Just Me

2. Riavviare i Vostri Dispositivi di Rete

A volte, problemi con i dispositivi di rete come modem o router possono generare l’errore 504 Gateway Timeout. Riavviare questi dispositivi potrebbe aiutarvi a risolvere il problema.

Mentre potete spegnere questi dispositivi di rete in qualsiasi ordine, è importante riaccenderli secondo un ordine preciso. Vi consigliamo di iniziare a riaccendere questi dispositivi seguendo l’ordine di connessione dal provider di servizi internet fino al vostro dispositivo client principale.

3. Controllare le Impostazioni del Vostro Proxy

Un server proxy si trova tra il vostro dispositivo e internet. Viene usato principalmente per migliorare la privacy online nascondendo informazioni private (ad esempio, la posizione del dispositivo) da siti web e server web (ad esempio, usando una VPN).

Anche se è raro che i server proxy causino un errore 504, le impostazioni errate del server proxy possono talvolta essere le colpevoli. Potete disattivare il server proxy e provare a ricaricare la pagina web per vedere se risolve l’errore.

Modifica delle impostazioni "Proxy" in Windows 10
Modifica delle impostazioni “Proxy” in Windows 10

La maggior parte dei client non usa un servizio proxy, quindi potete saltare questo passaggio se siete sicuri di non utilizzare alcun server proxy. Tuttavia, potreste averlo impostato senza nemmeno saperlo. Vi suggeriamo di controllare le impostazioni proxy del vostro dispositivo e del browser per escludere questa causa.

4. Problemi DNS

Un errore 504 Gateway Timeout può anche essere causato da problemi DNS lato server o lato client (o entrambi).

Il motivo più probabile per un problema DNS lato server è che il FQDN (che sta per “Fully Qualified Domain Name”) non si risolva all’indirizzo IP corretto o il server DNS non risponde. Di solito, questo si verifica quando avete appena migrato il sito su un nuovo server o host. Pertanto, è importante attendere che i record DNS del dominio si propaghino completamente, il che può richiedere fino a 24 ore.

Potete usare strumenti gratuiti come whatsmydns.net DNSChecker o DNSMap per vedere se il vostro DNS si è diffuso in tutto il mondo.

Controllo della propagazione DNS per il vostro dominio su whatsmydns.net
Controllo della propagazione DNS per il vostro dominio su whatsmydns.net

Per risolvere i problemi del DNS lato client, potete provare a svuotare la cache del DNS locale. È come svuotare la cache del browser, solo che qui si esegue la pulizia della cache del DNS dal sistema operativo.

Se usate Windows, potete eseguire la pulizia della cache del DNS aprendo il prompt dei comandi e inserendo la seguente direttiva:

ipconfig /flushdns
Pulizia della cache DNS con il command prompt in Windows
Pulizia della cache DNS con il command prompt in Windows

Se ha funzionato, dovreste vedere il messaggio “Successfully flushed the DNS resolver Cache”.

Per le ultime versioni di macOS, potete aprire il Terminal ed eseguire il seguente comando:

sudo killall -HUP mDNSResponder

Non vedrete alcuna notifica in macOS al termine del processo, ma potete cambiarla aggiungendo il comando con il vostro messaggio personalizzato.

sudo killall -HUP mDNSResponder; DNS Cache was cleared successfully

Se state usando versioni di macOS più vecchie, il comando che dovete inserire varia in base alla versione di macOS che state eseguendo. Per maggiori dettagli, potete fare riferimento alla sezione macOS nel tutorial approfondito di Kinsta sul DNS.

Se usate il sistema operativo Linux, allora il processo è abbastanza simile a quello di macOS, dato che anche Linux usa il Terminal come interfaccia della command line. Poiché esistono molte distribuzioni di Linux, l’esatto comando da eseguire può variare da una distribuzione all’altra. Potete consultare la guida di Kinsta per maggiori informazioni.

Infine, potete cambiare temporaneamente i server DNS lato client. Per impostazione predefinita, il vostro ISP vi assegna automaticamente i server DNS. Ma potete cambiarli temporaneamente in IP DNS pubblici.

Alcuni DNS affidabili che potete provare sono Google Public DNS, Cloudflare 1.1.1.1, Quad9 DNS e CiscoOpenDNS.

Impostazioni server DNS personalizzate in Windows 10
Impostazioni server DNS personalizzate in Windows 10

5. Disattivare Temporaneamente la CDN del Vostro Sito

A volte, il problema potrebbe anche riguardare la vostra rete di distribuzione dei contenuti (meglio conosciuta come CDN). Se il server di origine di un sito non è raggiungibile, le CDN di solito cercheranno di servire l’intera pagina web dalla loro cache.

Ma la maggior parte delle CDN non abilita questa funzione per impostazione predefinita, perché nella maggior parte dei siti è complesso mettere in cache le risorse dinamiche (come ad esempio la bacheca di amministrazione di WordPress).

Impostare la regola di pagina 'Cache Everything' in Cloudflare
Impostare la regola di pagina ‘Cache Everything’ in Cloudflare

Un modo semplice per risolvere il problema è quello di disattivare temporaneamente la CDN. Ad esempio, se usate il plugin WordPress gratuito CDN Enabler per collegare le risorse del sito all’URL della CDN, potete disattivare il plugin e provare a ricaricare il sito.

Lo stesso vale per l’utilizzo di qualsiasi altro plugin che vi serve per connettervi alla vostra CDN (ad esempio WP Rocket, Breeze, W3 Total Cache).

Se non potete accedere alla bacheca di amministrazione del vostro sito, potete disattivare il vostro plugin tramite SFTP rinominando il nome della cartella del plugin.

Disattivare tutti i plugin tramite SFTP rinominando il nome della cartella dei plugin
Disattivare tutti i plugin tramite SFTP rinominando il nome della cartella dei plugin

Le CDN come Cloudflare o Sucuri, che forniscono servizi proxy completi, includono firewall aggiuntivi tra i loro server edge e il vostro server di origine. Quindi, potreste incontrare più frequentemente errori HTTP 5xx durante il loro utilizzo. La maggior parte di essi mette in cache gli errori 5xx restituiti dal vostro server di origine, quindi è facile risolverli.

Il piano gratuito di Cloudflare tende a innescare un errore di 5xx. Sfortunatamente, essendo un servizio completo di proxy, non c’è un modo rapido per disabilitarlo. Ma prima di dare la colpa a Cloudflare, sappiate che Cloudflare mostra due varianti dell’errore 504 Gateway Timeout.

504 Gateway Timeout di Cloudflare (Variazione 1)

Cloudflare vi mostra una schermata personalizzata dell’errore 504 Gateway Timeout quando il server di origine del vostro sito risponde con una risposta standard HTTP 504.

Schermata personalizzata di Cloudflare per l’errore 504
Schermata personalizzata di Cloudflare per l’errore 504

Qui il problema è il vostro server web e non Cloudflare. Potete provare a risolverlo con le altre soluzioni menzionate qui sotto o contattare il supporto del vostro fornitore di hosting per un aiuto tecnico.

504 Gateway Timeout di Cloudflare (Variazione 2)

Se Cloudflare causa l’errore 504 Gateway Timeout, la schermata di errore menziona “cloudflare”, che è attualmente il nome standard del server per tutti gli asset Cloudflare. Di solito, la schermata di errore apparirà come segue:

Schermata di errore per il 504 Gateway Timeout di Cloudflare causato da Cloudflare
Schermata di errore per il 504 Gateway Timeout di Cloudflare causato da Cloudflare

Poiché Cloudflare stesso non risponde, qui non vedrete alcuna schermata di errore con il marchio Cloudflare.

Molto probabilmente, Cloudflare è già a conoscenza del problema e sta lavorando a una soluzione. Potete confermarlo controllando la pagina web di stato del sistema Cloudflare. In alternativa, potete mettervi in contatto con il supporto di Cloudflare per una risoluzione più rapida.

Controllare lo stato del sistema Cloudflare su cloudflarestatus.com
Controllare lo stato del sistema Cloudflare su cloudflarestatus.com

504 Gateway Timeout di Cloudflare Dovuto a Caricamenti di Grosse Dimensioni

Anche la dimensione dei caricamenti sul vostro sito può essere un motivo scatenante di timeout del server. Cloudflare limita la dimensione dei file da caricare (per richiesta HTTP POST) a soli 100 MB sia su piani Free che Pro.

Limite della dimensione massima di caricamento di Cloudflare per i vari piani
Limite della dimensione massima di caricamento di Cloudflare per i vari piani

Il problema può essere a carico del vostro host o di Cloudflare. Potete scoprire la causa esatta bypassando Cloudflare con il vostro file host DNS e provando di nuovo il caricamento.

Se state usando Cloudflare con WordPress, vi consigliamo di usare il loro plugin gratuito e di escludere gli URL critici dalla cache (come la bacheca di amministrazione di WordPress). Potete fare riferimento alla guida dettagliata di Kinsta su come configurare le impostazioni di Cloudflare per WordPress.

Lettura suggerita: Come Configurare Cloudflare APO per WordPress

6. Controllare i Problemi del Server con il Vostro Host

I problemi del server sono uno dei motivi più comuni per affrontare un errore 504 Gateway Timeout. Dal momento che la maggior parte dei siti WordPress sono ospitati su webserver Nginx o Apache, l’errore indica che o Nginx o Apache sono in attesa di una risposta da qualcosa e stanno andando in timeout.

Molti clienti passano a Kinsta proprio per via di questo problema che si trovano ad affrontare con altri host. La conversazione si svolge più o meno in questo modo:

Stiamo ricevendo circa 100k visitatori al mese con più di 200k visualizzazioni. Attualmente, il nostro sito si trova su ____ e riscontriamo costantemente errori 504 dovuti al sovraccarico del server. Non mi piace come ____ ha gestito il problema, e ci è stato anche consigliato di passare presto ai loro piani dedicati, cosa che credo non sia necessaria.

I siti ad alto traffico e quelli di ecommerce sono più inclini a sperimentare errori 504 a causa del sovraccarico del server, in quanto generano molte richieste impossibili da gestire. Tuttavia, questo problema può essere risolto con qualsiasi sito, compresi semplici blog. Molti host vi chiederanno di passare a un piano di alto livello per risolvere il problema, ma nella maggior parte dei casi non è necessario.

Kinsta usa host gestiti LXD e container software LXC orchestrati per ogni sito web. Così, ogni sito è ospitato in un proprio contenitore isolato con accesso a tutti i software necessari per eseguirlo (Linux, Nginx, PHP, MySQL). Le risorse sono al 100% private e non sono condivise con nessun altro sito, nemmeno con i vostri altri siti.

La maggior parte degli host che forniscono piani di hosting condivisi non vi danno questa possibilità. Quindi, un sito ad alto traffico ospitato sullo stesso server del vostro può causare al vostro sito un errore 504.

Oltre a isolare ogni sito nel suo container, Kinsta ha anche progettato la sua infrastruttura per gestire facilmente migliaia di connessioni simultanee. Kinsta ospita anche i database MySQL su localhost, non su un server remoto. Ciò significa nessuna latenza tra le macchine, con conseguente maggiore velocità di interrogazione e minori possibilità di timeout.

Molti clienti che migrano a Kinsta notano enormi diminuzioni dei tempi di caricamento complessivo.

Un aumento delle prestazioni del 212,5% dopo il passaggio a C2.
Un aumento delle prestazioni del 212,5% dopo il passaggio a C2.

Un server sovraccarico non è l’unica causa di timeout del server. Ci possono essere molte altre ragioni per l’errore 504:

Infrastruttura con Server Lento

Il server che usate per ospitare il vostro sito potrebbe non avere risorse sufficienti per gestire il carico. È come giocare a un videogioco moderno e ad alta intensità grafica su un PC con dieci anni di vita.

Il server si blocca cercando di servire il sito web. L’unica soluzione a questo problema è l’aggiornamento a un server con una migliore infrastruttura. Per questo motivo, anche il piano di hosting più elementare di Kinsta gestirà bene un sito statico con un traffico medio.

Necessità di Più PHP Workers

I PHP workers vengono usati per eseguire il codice sul vostro sito. Un sito di ecommerce che riceve 50.000 visitatori al mese ha bisogno di molte più risorse di un semplice blog con la stessa quantità di traffico. Se tutti i PHP workers del server sono occupati, creano una coda.

Quando la coda diventa troppo grande, il server ignora le vecchie richieste, il che può causare un errore 504. Potete chiedere al vostro host di aumentare il numero di PHP workers. Questo permetterà al vostro sito di eseguire più richieste contemporaneamente.

Problemi di Firewall

Il firewall del vostro server potrebbe avere alcuni errori o una configurazione non corretta. Forse alcune delle sue regole impediscono al server di stabilire una connessione corretta. Per sapere se il vostro firewall è il colpevole, potete controllare il registro degli errori del vostro server.

Problemi di Connettività di Rete

I problemi di connettività tra il server proxy e il server web potrebbero causare ritardi nella risposta alle richieste HTTP. Se usate un load balancer, potrebbero verificarsi problemi di connettività di rete anche per questo.

Timeout HTTP

I timeout HTTP possono verificarsi quando una connessione tra il server web e il client viene tenuta aperta per troppo tempo. Con i siti WordPress, questo accade di solito al momento dell’importazione di WordPress. Un modo per risolvere questo problema è passare a una connessione internet più veloce.

È inoltre possibile usare uno strumento con supporto per WP-CLI per eseguire gli script direttamente sul server, bypassando completamente la connessione HTTP. Per esempio, potete usare il comando wp import WP-CLI per eseguire il plugin WordPress Importer direttamente attraverso l’interfaccia della riga di comando.

Importante: gli errori 504 Gateway Timeout sono simili agli errori 503 Service Unavailable o a quelli 502 Bad Gateway. Ma sono tutti diversi. Se si verifica un errore 504 su Kinsta, aprite un ticket di supporto per risolvere immediatamente il problema.

Per monitorare in autonomia i tempi di inattività del vostro sito, potete usare uno strumento come updown.io. Controllerà periodicamente lo stato del vostro sito web (o qualsiasi URL) inviandogli una richiesta HTTP. È possibile impostare la frequenza di controllo da 15 secondi a 1 ora. Se il vostro sito web non risponde correttamente, vi avviserà con un’email o un SMS.

Monitorate il vostro sito web facilmente con updown.io
Monitorate il vostro sito web facilmente con updown.io

Con ogni account di updown.io otterrete una generosa quantità di crediti gratuiti, ma se siete alla ricerca di alternative più economiche potete controllare WebGazer o UptimeRobot. Entrambi questi strumenti vi aiuteranno a monitorare l’uptime del vostro sito ogni 5 minuti, gratuitamente. È un lasso di tempo sufficiente per la maggior parte dei proprietari di siti web.

Bacheca dello strumento di monitoraggio del sito WebGazer
Bacheca dello strumento di monitoraggio del sito WebGazer

Monitorare il vostro sito web vi aiuterà a capire quante volte è inattivo. Questo è particolarmente utile se usate un provider di hosting condiviso. La maggior parte degli host di applicazioni, database e WordPress gestiti (come Kinsta) si occupa automaticamente di questo aspetto. Pertanto, è sempre consigliabile rivolgersi a loro.

Per una spiegazione dettagliata, date un’occhiata al post di Kinsta sull’importanza dell’hosting WordPress gestito.

7. Verificate la Presenza di Spam, Bot o Attacchi DDoS.

Gli aggressori malintenzionati possono rallentare all’estremo il vostro server web inviando troppe richieste e/o ad alta intensità di risorse. Se il vostro sito riceve spam dai bot o subisce un attacco DDoS, il vostro server può soffrirne e generare errori 504 Gateway Timeout anche per molti utenti autentici.

Potete osservare il traffico del server e le sue statistiche per vedere se è possibile individuare eventuali comportamenti irregolari nel traffico del sito. Se state usando Kinsta per ospitare il vostro sito, potete visualizzare facilmente questi dati andando sul cruscotto di MyKinsta Analytics.

Statistiche a livello di sito in MyKinsta.
Statistiche a livello di sito in MyKinsta.

Iniziate la vostra indagine osservando i principali IP dei client. Vi darà un’idea di chi sta generando il massimo numero di richieste e da dove. Se il vostro server consuma improvvisamente un’enorme larghezza di banda o attira molto traffico, questo rapporto vi sarà utilissimo.

IP dei clienti principali visualizzati nel cruscotto delle statistiche.
IP dei clienti principali visualizzati nel cruscotto delle statistiche.

Successivamente, potete controllare il rapporto Cache Analysis per l’analisi della cache. Qui potete vedere quante richieste vengono bypassate o mancano nella cache, o vengono servite dalla cache. Per ragioni di performance e stabilità, vi conviene mettere in cache il maggior numero possibile di richieste, ma non sempre è possibile ottenere questo risultato.

Ad esempio, i siti WooCommerce generano un sacco di richieste di funzioni che non si possono mettere in cahce come il carrello della spesa e il processo di checkout.

La schermata "Cache Analysis" in MyKinsta
La schermata “Cache Analysis” in MyKinsta

Infine, potete usare un plugin di sicurezza per rafforzare la sicurezza del vostro sito web, individuando e bloccando il traffico o gli IP preoccupanti. Potete chiedere al vostro host di bloccare anche certi IP.

A seconda della lunghezza e della portata dell’attacco, questo potrebbe risultare in un processo senza fine di blacklisting degli IP, poiché molti aggressori cambiano i loro IP e indirizzi proxy dopo essere stati bloccati.

Nota: Kinsta non permette ai suoi clienti di installare plugin di sicurezza perché possono avere un enorme effetto sulle prestazioni del sito, in particolare sulle sue capacità di scansione. Poiché Kinsta usa i load balancer con Google Cloud Platform, il blocco degli IP non sempre funziona come previsto.

Potete usare soluzioni di sicurezza dedicate come Cloudflare o Sucuri per proteggere i vostri siti dagli attacchi DDoS e dai bot di spam. Per saperne di più, potete consultare gli articoli di Kinsta su come installare Cloudflare sul vostro sito e su come Sucuri ha contribuito a fermare un attacco DDoS sul nascere.

8. Riparare il Database WordPress Danneggiato

A volte, un errore 504 Gateway Timeout può essere dovuto a un database corrotto, specialmente nei siti WordPress. Tipicamente, questo è dovuto a tabelle o file di database corrotti. A volte, può anche essere causato da un grave problema di sicurezza come la violazione del vostro sito o del vostro database.

La modalità di riparazione di un database WordPress corrotto dipende dal problema. Plugin come WP-DB Manager rendono facile diagnosticare i problemi del database e ripararli. Per iniziare, vi consigliamo di leggere la dettagliata guida di Kinsta sulla risoluzione dei problemi del database WordPress.

9. Controllate i Plugin e i Temi del Vostro Sito

Nella maggior parte dei casi, i plugin e i temi di terze parti non causano errori 504. Ma c’è una leggera possibilità che possano causare timeout del server, di solito mettendo in coda un sacco di richieste non comunicate generate dal plugin/tema. Dato che questo occupa molti dei PHP workers del vostro server, può causare errori 504.

Un buon esempio del problema viene da WooCommerce, che è un plugin installato per aggiungere funzionalità di ecommerce ai siti WordPress.

Il modo più semplice per risolvere questo problema è quello di disattivare tutti i plugin. Ricordate che non perderete alcun dato con la semplica disattivazione di un plugin.

Se riuscite ad accedere alla bacheca di amministrazione, potete andare alla schermata Plugins, selezionare Deactivate dal menu delle azioni di massa, spuntare tutti i plugin e poi premere il pulsante Apply. In questo modo disabiliterete tutti i plugin.

Disattivazione di tutti i plugin di WordPress tramite la bacheca di amministrazione di WP
Disattivazione di tutti i plugin di WordPress tramite la bacheca di amministrazione di WP

Se non riuscite ad accedere alla vostra area amministrativa, potete disattivare i plugin tramite SFTP con il metodo descritto in precedenza. Basta rinominare il nome della cartella principale del plugin per disabilitare tutti i plugin in blocco.

Una volta disattivati tutti i plugin, controllate se il vostro sito si carica correttamente. Se funziona, allora dovete attivare ogni plugin uno per uno, testando il sito dopo aver abilitato ogni plugin.

Infine, assicuratevi che i vostri plugin, i temi e il core di WordPress siano aggiornati. Inoltre, assicuratevi che il vostro server stia eseguendo la versione raccomandata di PHP.

Se questo procedimento vi sembra al di là delle vostre capacità, potete sempre chiedere aiuto al vostro host. Kinsta usa Kinsta APM e altre tecniche di risoluzione dei problemi per aiutare i clienti a restringere il campo dei plugin, query o script che potrebbero causare l’errore.

Negli scenari peggiori, come una query inefficiente o un codice malfunzionante in un plugin/tema, potete ricorrere all’aiuto di un/a professionista dello sviluppo WordPress.

10. Controllare i Registri di Errore

La visualizzazione dei registri degli errori può essere molto utile per la risoluzione dei problemi e il debug di errori 504 sul vostro sito. Questo può aiutarvi a restringere rapidamente il campo di ricerca di un problema sul vostro sito, specialmente se è il risultato di un plugin che avete installato sul vostro sito e che richiede molte risorse.

Se siete clienti di Kinsta, potete facilmente vedere gli errori registrati nel cruscotto di MyKinsta. Iniziate selezionando Siti WordPress nel menu della barra laterale, scegliete il sito che volete esaminare, quindi selezionate Log per aprire la pagina di visualizzazione dei registri.

Visualizzazione del file error.log nel cruscotto di MyKinsta.
Visualizzazione del file error.log nel cruscotto di MyKinsta.

Se il vostro host non ha uno strumento di log per consultare i registri di errore, allora potete abilitare la modalità di debug di WordPress aggiungendo il seguente codice al vostro file wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

La costante WP_DEBUG abilita o disabilita la modalità di debug di WordPress. Viene accompagnata da due costanti opzionali che possono estendere le sue caratteristiche. La costante WP_DEBUG_LOG dirige tutti gli errori da salvare in un file debug.log all’interno della directory /wp-content/. Se non vedete questo file, potete sempre crearne uno.

La costante WP_DEBUG_DISPLAY controlla se i log di debug appaiono nella pagina HTML. Impostandola su false nascondete tutti gli errori, ma li potete rivedere in seguito, poiché avete definito la costante WP_DEBUG_LOG come true.

Importante: Se avete abilitato WP_DEBUG nell’ambiente Kinsta, questa indirizzerà tutti gli errori al file debug.log e non al file error.log nel cruscotto di MyKinsta.

Potete anche scaricare i file di registro degli errori di WordPress grezzi via SFTP. Di solito i registri di errore si trovano nella directory principale del server in una cartella chiamata “logs”.

Accesso alla cartella dei registri degli errori di WordPress tramite SFTP
Accesso alla cartella dei registri degli errori di WordPress tramite SFTP

I clienti di Kinsta possono anche abilitare la modalità di debug di WordPress dal loro cruscotto MyKinsta. Per farlo, andate su Sites > Tools > WordPress Debugging e fate clic sul pulsante Enable. Questo vi permetterà di vedere gli errori e gli avvisi di PHP senza dover abilitare la modalità di debug via SSH o SFTP.

Infine, potete controllare i file di registro del server. A seconda del server che state usando per ospitare il vostro sito WordPress, i file si trovano di solito in queste posizioni:

  • Apache: /var/log/apache2/error.log/
  • Nginx: /var/log/nginx/error.log/

Per ulteriori informazioni fate riferimento alla documentazione sui registri di Apache o Nginx.

11. Configurare Correttamente le Impostazioni di Apache o Nginx

Potete modificare i file di configurazione del server per aumentare i limiti delle risorse per direttive specifiche. Questo può aiutare a risolvere l’errore 504 Gateway Timeout.

Per i Web Server Apache

Per prima cosa, aggiungete il seguente codice al vostro httpd.conf:

TimeOut 600

Questa impostazione definisce per quanto tempo il server attenderà determinate richieste prima di contrassegnarlo come un problema di timeout di rete. Il suo valore predefinito è 60 secondi (versione Apache 2.4).

Potete aggiungere questa direttiva solo nel vostro file httpd.conf, ma non nel file .htaccess. Poiché la maggior parte dei provider di hosting condivisi non consentono di modificare il file httpd.conf, potete provare ad aumentare il valore della direttiva LimitRequestBody nel vostro file .htaccess.

Poi aggiungete la seguente riga al vostro file php.ini:

max_execution_time 300

Il valore predefinito della direttiva max_execution_time di PHP è di 30 secondi. Aumentandolo, gli script PHP del vostro sito potranno funzionare più a lungo.

Per i Web Server Nginx

Se state facendo girare i siti WordPress su Nginx + FastCGI Process Manager (PHP-FPM) o usate Nginx come reverse proxy per Apache, potete modificare le impostazioni del server per aiutare a prevenire gli errori 504 Gateway Timeout .

Errore 504 Gateway Timeout su Nginx + FastCGI (PHP-FPM)

Per prima cosa, dovete modificare il file di configurazione del pool PHP-FPM. Potete trovarlo nella posizione /etc/php7.4/fpm/pool.d/www.conf nel vostro server Nginx (il percorso esatto può variare in base alla versione PHP). In alternativa, potete eseguire il seguente comando nel vostro Terminal per modificare il file di configurazione del pool di PHP-FPM:

sudo nano /etc/php/7.2/fpm/pool.d/www.conf

Successivamente, impostate la seguente direttiva:

request_terminate_timeout = 300

Dopo questo, dovete modificare il file php.ini. Potete trovarlo in /etc/php.ini. Aprite il file e aggiungete/cambiate il valore per la direttiva max_execution_time a 300 secondi.

max_execution_time = 300

Infine, aggiungete il seguente codice al blocco di posizione del file nginx.conf:

location ~ .php$ {
...
fastcgi_read_timeout 300;
}

Ricaricate Nginx e PHP-FPM affinché le modifiche abbiano effetto.

sudo service nginx reload
sudo service php7.4-fpm reload

Il codice esatto per ricaricare PHP-FPM varia in base alla versione PHP installata sul vostro server. Testate il vostro sito per vedere se avete risolto il problema.

Errore 504 Gateway Timeout su Proxy Nginx

Se usate Nginx come server proxy inverso per Apache, potete renderlo più indulgente verso i timeout del server aggiungendo le seguenti direttive al file nginx.conf:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

Non dimenticate di ricaricare Nginx dopo aver fatto le modifiche.

sudo service nginx reload

Altri Errori HTTP Simili al 504 Gateway Timeout

Come accennato in precedenza nell’articolo, ci sono molti altri errori HTTP 5xx simili all’errore 504 Gateway Timeout perché si verificano tutti lato server. Questi errori includono:

Anche altri errori HTTP causati da problemi sul lato client, come l’errore 404 Not Found, sono simili all’errore 504. Potete fare riferimento alla guida dettagliata di Kinsta e all’elenco dei codici di stato HTTP per avere maggiori informazioni.

Riepilogo

Il vostro sito può essere influenzato dall’errore 504 Gateway Timeout per molteplici motivi. In questo articolo avete imparato a risolverli tutti. In genere, questi errori sono causati da problemi sul lato server, nel qual caso potete mettervi in contatto con il vostro host e risolverli rapidamente.

Tuttavia, è necessario comprendere che questo errore può essere causato da plugin di terze parti, temi, servizi, query di database inefficienti o una combinazione di due o più di questi. Se state esaurendo le risorse del server (ad esempio i PHP workers), si consiglia di ottimizzare il sito per migliorarne le prestazioni.

Se vedete che il vostro sito web è ancora in ritardo, allora potrebbe benissimo significare che avete bisogno di aggiornare il vostro piano di hosting o il numero di PHP workers. Vi consigliamo di considerare questa opzione solo dopo aver esaurito tutte le altre soluzioni descritte in questo articolo.

Dai semplici siti statici ai complessi siti di ecommerce e a iscrizione, i piani di hosting scalabili di Kinsta sono progettati per accogliere tutti i tipi di siti web. Per saperne di più sul nostro cloud hosting scalabile, date un’occhiata a questo articolo sulle cose più importanti da sapere su Kinsta!

Ci siamo persi qualcosa? Se avete ancora difficoltà a correggere l’errore 504 Gateway Timeout sul vostro sito WordPress, lasciate un commento qui sotto.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.