Se produce un error de tiempo de espera de puerta de enlace 504 cuando Nginx no puede recibir una respuesta del servicio durante el tiempo suficiente. Por ejemplo de PHP-FPM.
Nginx y PHP-FPM
La causa más común de este error es la colaboración de Nginx y PHP-FPM. En caso de que haya scripts PHP muy lentos, Nginx dará un tiempo de espera de puerta de enlace 504 cuando no espere una respuesta durante 30 segundos (por defecto).
Para deshacerse de este error, intente aumentar el tiempo de espera:
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
El tiempo de espera de la puerta de enlace 504 también puede ocurrir cuando Nginx se usa como un servidor proxy. Por ejemplo, cuando se trabaja con Apache. Para evitar problemas, debe configurar los ajustes de tiempo de espera para el proxy:
server { ... proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; ... }
No olvide reiniciar Nginx después de cambiar la configuración:
# nginx -s reload
Es importante entender que es muy recomendable deshacerse de los scripts lentos. Una solución con ajustes de tiempo de espera puede dejar de funcionar cuando aumenta la carga.