Une erreur de dépassement de délai de passerelle 504 se produit lorsque Nginx ne peut pas recevoir de réponse du service suffisamment longtemps. Par exemple depuis PHP-FPM.
Nginx et PHP-FPM
La cause la plus courante de cette erreur est la collaboration de Nginx et PHP-FPM. Dans le cas où il y a des scripts PHP très lents, Nginx donnera un délai d'attente de passerelle 504 lorsqu'il n'attend pas de réponse pendant 30 secondes (par défaut).
Pour vous débarrasser de cette erreur, essayez d'augmenter le délai :
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; }
Procuration
Le délai d'expiration de la passerelle 504 peut également se produire lorsque Nginx est utilisé comme serveur proxy. Par exemple, lorsque vous travaillez avec Apache. Afin d'éviter les problèmes, vous devez configurer les paramètres de délai d'attente pour le proxy :
server { ... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; ... }
N'oubliez pas de redémarrer Nginx après avoir modifié les paramètres :
# nginx -s reload
Il est important de comprendre qu'il est fortement conseillé de se débarrasser des scripts lents. Une solution avec des paramètres de délai d'attente peut cesser de fonctionner lorsque la charge augmente.