El error HTTP 504 Gateway Timeout (error de tiempo de espera en la puerta de enlace) ocurre cuando un servidor intermediario, o bién una interfaz de red «Gateway», no responde a la solicitud del navegador dentro de un tiempo específico.
Este «Gateway» servidor intermediario o interfaz de red puede ser un servicio que actúe como un filtro de seguridad, un servicio intermediario de caché, un balanceador de carga, etc. Esto es lo que llamamos un servicio «proxy», que actúa como una puerta de enlace de red para tu ordenador o para el tráfico de tu servidor web.
Esquema de muestra como un balanceador de carga Nginx no puede esperar más y cierra la conexión retornando el error 504 Gateway Timeout.
504 Gateway Timeout vs 499 Client Closed Request
Este error 504 es muy similar al error 499 que produce Nginx. La diferencia es que, cuando obtienes un 499, es el cliente el que cierra la conexión por timeout, mientras que con un 504 es el servidor proxy el que cierra la conexión. En ambos casos el error HTTP lo envia el proxy, y el código de error dependerá del extremo de la conexión que agota la espera.
Diferentes mensajes de error 504
Diferentes servidores web pueden mostrar diferentes variaciones del error 504 Gateway Timeout. Aunque todos significan lo mismo, sus convenciones de nomenclatura pueden diferir ligeramente. A continuación, se muestran algunos ejemplos de cómo podría ver un error 504.
504 Gateway Timeout
Nginx 504 Gateway Timeout
504 Gateway Timeout NGINX
HTTP 504
504 ERROR
Gateway Timeout (504)
HTTP Error 504 – Gateway Timeout
Gateway Timeout Error
Identifica cuál es la causa del error
Hay dos situaciones diferentes en las que puede ocurrir un error 504:
Tu ordenador está detrás de un servicio proxy. Darás con errores 504 mientras navegas y el tráfico de tu red pasa a través de un servicio intermediario o proxy. Esto es común en las grandes empresas y en algunos proveedores de Internet. El propósito es añadir una capa de seguridad y/o reducir el tráfico de la red.
Tu aplicación o sitio web está detrás de un servicio de proxy. Surgirá el error 504 solo al navegar por un sitio web determinado. En este caso, el sitio que retorna el error tiene un servidor proxy que actúa como Cortafuegos, Load Balancer o CDN (Content Delivery Network).
Causas del error 504 Gateway Timeout
Agruparemos las causas de error según los dos usos del proxy anteriormente citados.
Causas de error 504 cuando tu ordenador está detrás de un proxy
Una incorrecta configuración del proxy del ordenador puede causar errores 504.
Problemas en el servicio proxy por el que está pasando el tráfico de tu ordenador.
Problemas con tu proveedor de servicios de Internet.
Causas de error 504 cuando tu web está detrás de un proxy
Tu servicio de proxy externo está fallando.
Tu sitio web o aplicación se bloquea.
Tu Proxy tiene un tiempo de espera bajo.
Cómo corregir el error 504 cuando tu ordenador está detrás de un proxy
Puedes seguir las siguientes pautas para encontrar y corregir el error 504 Gateway Timeout si tu ordenador local está trabajando detrás de un servicio de proxy:
Los proxies brindan una capa adicional de seguridad para tu ordenador o dispositivo móvil y también pueden almacenar en caché los sitios web que visitas para que se carguen más rápido en las visitas posteriores.
Verifica la configuración del proxy de tu ordenador
Para corregir el error 504 de Timeout en el Gateway (proxy) causado por tu ordenador, verifica la configuración del servidor proxy y asegúrate de que sea correcta según las indicaciones de tu proveedor.
Esta es la página de configuración del proxy en Mac OSX. La puedes encontrar en el panel Configuración de red.
Si la configuración de tu proxy está bien, es probable que haya un problema con el servicio de proxy.
Verifica la conectividad de tu red y el estado del proxy
Si la configuración del proxy de tu ordenador está bien, primero que nada: reinicia tu módem de red y/o router WiFi. Esto asegurará que empezamos con una «red limpia» donde todas las conexiones se han reiniciado y las posibles tablas de rutas y caches liberadas.
Si el error 504 persiste, el siguiente paso es preguntarle a tu proveedor de servicios de proxy.
Cómo corregir el error 504 cuando tu web está detrás de un proxy
En este caso, el error 504 solo se da mientras navegas por un sitio web determinado. Si este sitio está bajo tu control, sigue las siguientes pautas para corregirlo:
Comprueba el estado del servicio de proxy
Si estás utilizando un servicio de proxy externo, consulta la página de «estado» del servicio. La mayoría de servicios hoy en dia exponen el estado e informan de posibles problemas en sus correspondientes páginas de Estado del Servicio, «Service Status»
Esta es una lista de «Páginas de estado» de los principales proveedores de servicios de equilibrio de carga, CDN y seguridad:
Comprueba si tienes peticiones con tiempos de proceso largos
Puedes tener errores 504 debido a un servidor web lento. Esto ocurre cuando el tiempo dedicado a procesar y crear una determinada página web (o petición de otro tipo) lleva más tiempo del que puede esperar la puerta de enlace proxy.
En esta anterior captura de pantalla de registros «logs», se puede observar que los errores 504 tienen un «parsed.request_time» superior a 300 segundos.
Si tienes una lista concreta de peticiones con tiempos de espera excesivamente largos, prueba una o varias de estas siguientes soluciones:
Si esperar más tiempo en el proxy tiene sentido para tus solicitudes afectadas: incrementa el tiempo de espera en tu proxy. Por ejemplo en el caso ilustrado, las peticiones son a un sistema de clonación de WordPress, que necesita mucho más tiempo pues la tarea de hacer copia es larga.
Si esperar más no soluciona el problema o no es una opción deseada: Aumenta la capacidad de procesamiento de tu servidor. Al aumentar el «poder de procesamiento», reducirás el tiempo de espera de tu servicio proxy y este no te devolverá el 504.
Algo que nunca debes descartar es tratar de averiguar si hay algún problema de código o de base de datos:
Busca errores en los archivos de registro «logs«.
Reparar y/o optimiza las tablas e índices. Si estás ejecutando MariaDB o MySQL, lo más probable es que tengas un panel de phpMyAdmin desde donde lanzar el «Repair table» y/o «Optimize table«:
Si tu web trabaja con WordPress, verifica que no tienes conflictos entre plugins que desenvoquen en un uso excesivo de la CPU o de base de datos. Para simplificar esta tarea, te recomendamos inspeccionar tu WordPress con el plugin Query Monitor.