504 Gateway Timeout NGINX

5xx Fehlermeldungen beschreiben eine erfolgreiche Annahme der Anfrage eines Clients, auf die jeoch ein interner Fehler beim Server folgte. Ein 504-Error weist explizit darauf hin, dass ein z.B. Edge Server, von einem anderen Server keine rechtzeitige Antwort erhalten hat. Näheres findet man bei der IETF unter Punkt 6.6.5. Eine Möglichkeit den 504 Error zu beheben, ist es die Wartezeit des EdgeServer anzupassen, damit dieser länger auf eine Antwort wartet.

Um den Timeout deines NGINX anzuheben, füge folgende Zeilen in der nginx.conf ein:

sudo nano /etc/nginx/nginx.conf
proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600;

Wird zusätzlich noch FastCGI verwendet, sollten noch Werte des PHP FastCGI Process Manager (php-fpm) angepasst werden.

sudo nano /etc/phpXX/fpm/php.ini

Achtung: Der Pfad kann je nach verwendeter PHP-Version abweichen. „locate php.ini“ zeigt den richtigen Pfad auf.
In besagter Datei sollte der Wert der max_execution_time erhöht werden. Der hier verwendete Wert muss dann ebenfalls in die www.conf von php-fpm übernommen werden. Auch hier ist der Pfad wieder variabel.

sudo nano  /etc/phpXX/fpm/pool.d/www.conf 

Auf die geänderten Werte wird der NGINX hingewiesen, indem ein Verweis in der nginx.conf hinzugefügt wird. Unterhalb von location ~ \.php$ sollte folgendes ergänzt werden:

fastcgi_read_timeout 300;

Zum Abschluss muss NGINX neu getsartet werden.

service nginx reload