Uno de los problemas más habituales que se suelen observar en los servidores proxy son los errores 504 Gateway Timeout. Lo que indica que el servidor proxy no ha podido recibir la respuesta del otro servidor en el tiempo asignado. La causa por la que se muestra este error puede ser múltiple: un problema de saturación temporal en el servidor, un problema de conectividad entre los servidores o una configuración de los tiempos de espera de solicitud insuficientes. En todos los casos, una solución eficaz al error 504 Gateway Timeout en NGINX es aumentar los tiempos de espera para que no aparezca el error. En esta entrada se va a ver cómo realizar este proceso.
Acceder al archivo de configuración de NGINX
El primer paso para solucionar el error 504 Gateway Timeout en NGINX es acceder al archivo de configuración que habitualmente se encuentra en la ruta /etc/nginx/nginx.conf
. Para editar este archivo es necesario contar con permisos de administrador. Por eso, para acceder al archivo con permiso de escritura, será necesario ejecutar el siguiente comando en la terminal:
$ sudo nano /etc/nginx/nginx.conf
Este comando pedirá la contraseña de administrador y abrirá el archivo en el editor nano
. Si se prefiere también se puede hacer los cambios con vi
ejecutando el siguiente comando:
$ sudo vi /etc/nginx/nginx.conf
Aumenta el tiempo de espera de las solicitudes
En el archivo de configuración de NGINX hay que modificar el tiempo de espera de las solicitudes, para lo que se debe cambiar el valor de las propiedades proxy_read_timeout
, proxy_connect_timeout
y proxy_send_timeout
. Para ello se debe localizar el bloque http
y agregar o modificar los valores asignados a estas propiedades. Si se desea aumentar el tiempo de respuesta a 5 minutos (300 segundos) se puede dejar el archivo de configuración como se muestra a continuación.
http { # Otras configuraciones de NGINX # Ajuste de tiempos de espera proxy_read_timeout 300s; proxy_connect_timeout 300s; proxy_send_timeout 300s; # Otras configuraciones de NGINX }
Si se desea cambiar el valor a solamente se debe calcular y escribir el valor en segundos. En este punto, se deben guardar los cambios antes de salir del editor de texto.
Nótese que cada uno de estos valores indica un tiempo límite para diferentes tareas. No es necesario que sean todos iguales. El propósito específico de cada uno de estos tiempos es el siguiente:
- proxy_read_timeout: Es el límite máximo de tiempo que NGINX esperará para recibir datos del otro servidor después de que la conexión se haya establecido con éxito.
- proxy_connect_timeout: Indica cuánto tiempo esperará NGINX para que se establezca la conexión con el otro servidor.
- proxy_send_timeout: Determina cuánto tiempo esperará NGINX para enviar toda la solicitud al otro servidor una vez que se haya establecido la conexión con éxito.
Verifica la sintaxis del archivo de configuración es correcta
Antes de reiniciar el servidor NGINX es importante verificar que la sintaxis del archivo de configuración es correcta. Evitando de este modo que el servidor este caído hasta que se identifique y solucione el error. Esto se puede solucionar ejecutando el siguiente comando en la terminal:
$ sudo nginx -t
Si no hay errores en la sintaxis, aparecerá un mensaje indicando que la configuración es válida.
Reinicio de NGINX
Una vez comprobado que la sintaxis del archivo de configuración es válida se puede reiniciar el servidor NGINX para que se apliquen los cambios. El comando que se debe ejecutar en cada caso dependerá de la distribución. En el caso de distribuciones basadas en Red Hat, como CentOS o Rocky Linux, el comando que se debería ejecutar es el siguiente:
$ sudo systemctl restart nginx
Por otro lado, para distribuciones basadas en Debian, como es el caso de Ubuntu, el comando sería:
$ sudo service nginx reload
Conclusiones
El error 504 Gateway Timeout en NGINX aparece porque no se obtiene una respuesta en tiempo del servidor. La forma más fácil de solucionar este problema es aumentar los tiempos de espera del proxy para dar tiempo al otro servidor a responder. En esta tutoría se han visto los pasos necesarios para aumentar los tiempos de espera en un servidor NGINX usado como proxy con lo que se reduce la posibilidad de observar un error 504 Gateway Timeout.
Un error que es debido a la configuración del propio servidor NGINX, no como el “13: Permission denied“ que es debido a la configuración del Linux.
Deja una respuesta