Sin categoría

Solución del error 504 Gateway Timeout en NGINX

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.

Imagen de Enrique en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: LinuxNginx

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.