Ecco come risolvere l’errore 504 Gateway Timeout con nginx in modalità standalone o proxy
Una configurazione superficiale di nginx e PHP possono portare problemi su operazioni più complesse e lunghe, in particolare quando uno script impiega più di un certo numero di secondi per eseguire le operazioni, facendo restituire un messaggio d’errore alla pagina identificato con errore 504. I messaggi in base alla configurazione che potremo trovare sono i seguenti:
- “504 Gateway Timeout”
- “504 Gateway Time-Out”
- “504 Gateway Timeout NGINX”
- “Nginx 504 Gateway Timeout”
- “HTTP 504 Gateway Timeout”
- “HTTP 504 Error”
- “HTTP 504”
- “Gateway Timeout (504)”
Vediamo come procedere per correggere l’errore 504 Gateway Timeout con Nginx.
In questa guida interverremo su un sistema ubuntu/debian con nginx+PHP-FPM (PHP 5.x). Prima di tutto dobbiamo modificare max_execution_time nel file /etc/php5/fpm/php.ini di PHP-FPM portandolo a 600 o 900.
max_execution_time = 900
Ora cerchiamo la stringa request_terminate_timeout nel file /etc/php5/fpm/pool.d/www.conf e impostiamo 900
request_terminate_timeout = 900
ora nel blocco del vhost di nginx dobbiamo aggiungere
questa può cambiare. Ad esempio potrestre trovare qualcosa come questo
location @php {
try_files $uri =404;
fastcgi_pass unix:/var/lib/php5-fpm/web10.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_read_timeout 900;
}
o questo
location ~ .php$ {
root /var/www/sites/nginxtips.com;
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 900;
}
ovviaemente questi sono puramente esempi, dovrete inserire fastcgi_read_timeout 900; al posto giusto. Infine riavviamo i servizi
service php-fpm restart
service nginx restart
Se usiamo invece nginx come reverse proxy, nel file nginx.conf aggiungiamo queste stringhe
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
send_timeout 900;
anche in questo caso diamo un
service php-fpm restart
service nginx restart