Ein 504-Gateway-Timeout-Fehler tritt auf, wenn Nginx nicht lange genug eine Antwort vom Dienst erhalten kann. Zum Beispiel von PHP-FPM.
Nginx und PHP-FPM
Die häufigste Ursache für diesen Fehler ist die Zusammenarbeit von Nginx und PHP-FPM. Falls es sehr langsame PHP-Skripte gibt, gibt Nginx ein 504-Gateway-Timeout aus, wenn es 30 Sekunden lang nicht auf eine Antwort wartet (standardmäßig).
Um diesen Fehler zu beseitigen, versuchen Sie, das Zeitlimit zu erhöhen:
location ~ \.php$ { 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 300; }
Proxy
504-Gateway-Timeout kann auch auftreten, wenn Nginx als Proxyserver verwendet wird. Zum Beispiel bei der Arbeit mit Apache. Um Probleme zu vermeiden, müssen Sie die Timeout-Einstellungen für den Proxy konfigurieren:
server { ... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; ... }
Vergessen Sie nicht, Nginx neu zu starten, nachdem Sie die Einstellungen geändert haben:
# nginx -s reload
Es ist wichtig zu verstehen, dass es sehr ratsam ist, langsame Skripte loszuwerden. Eine Lösung mit Timeout-Einstellungen funktioniert möglicherweise nicht mehr, wenn die Last zunimmt.