- El error 504 ocurre cuando un servidor intermedio no recibe respuesta a tiempo de un servidor upstream.
- Las causas varían desde saturación de recursos y scripts lentos hasta configuraciones erróneas de firewall o DNS.
- La solución implica optimizar el código, ajustar los tiempos de espera (timeouts) del servidor y mejorar la infraestructura de hosting.

Seguro que te ha pasado: intentas entrar en tu web favorita o en la tuya propia y, de repente, aparece el dichoso mensaje de 504 Gateway Timeout. Es una sensación frustrante porque, a diferencia de otros fallos, este no te dice exactamente qué ha roto, sino que simplemente se ha acabado el tiempo de espera y el servidor ha tirado la toalla.
Básicamente, estamos ante un problema de comunicación. Imagina que el navegador es un cliente en un restaurante, el servidor proxy es el camarero y el servidor final es el cocinero. El camarero va a la cocina, pero el cocinero tarda una eternidad en preparar el plato; llega un punto en que el camarero vuelve al cliente y le dice que no puede servirle nada porque el tiempo límite ha expirado. Eso es, en esencia, un error 504.
¿Qué está pasando realmente en el servidor?
Cuando navegamos, el servidor suele responder con un código 200 si todo va sobre ruedas. Pero el 504 es un código de estado HTTP que indica que un servidor, actuando como puerta de enlace o proxy, no ha obtenido una respuesta oportuna del servidor que tiene «aguas arriba» (upstream). Es importante recalcar que este fallo pertenece estrictamente al lado del servidor, aunque a veces el usuario pueda intentar algunas maniobras para descartar problemas locales.
Causas más comunes de este dolor de cabeza
Existen diversos motivos por los que una web puede colgarse así. En primer lugar, la sobrecarga de recursos es la culpable habitual. Si hay un pico de tráfico repentino, como una campaña viral o una oferta flash, la CPU y la RAM pueden llegar al límite, haciendo que el servidor no dé abasto.
Otro motivo frecuente son los scripts PHP ineficientes. Si tienes un proceso que debe redimensionar cientos de imágenes o generar un informe masivo, es muy probable que supere el tiempo de ejecución permitido y provoque el timeout. Asimismo, las consultas de base de datos lentas, aquellas que no tienen índices adecuados y obligan al servidor a escanear miles de filas, generan cuellos de botella críticos.
Tampoco podemos olvidar la infraestructura. Un firewall mal configurado o grupos de seguridad restrictivos pueden bloquear el tráfico entre el proxy (como CloudFront o Nginx) y el servidor de origen. De igual forma, si la web depende de APIs de terceros que están caídas o responden con lentitud, el servidor principal se quedará esperando hasta que salte el error 504.
Cómo intentar solucionarlo si eres un usuario
Si no eres el dueño de la web, tus opciones son limitadas, pero no desesperes. Lo primero es recargar la página después de unos 30 o 60 segundos; a veces es solo un atasco temporal. También es recomendable probar desde un dispositivo distinto o una conexión móvil para confirmar que el fallo no está en tu router o en tu caché de DNS.
En Windows, puedes intentar limpiar la caché de DNS usando el comando ipconfig /flushdns, o probar a cambiar los servidores DNS por los de Google o Cloudflare para descartar que la resolución del dominio sea la que esté ralentizando todo.
Soluciones técnicas para administradores y desarrolladores
Si la web es tuya, toca ponerse manos a la obra. Lo primero es analizar los logs de errores (como el error_log de PHP o los registros de Nginx/Apache). Ahí es donde descubrirás si hay errores de memory exhausted o procesos que se quedan colgados.
Ajustes en la configuración del servidor
Una solución rápida, aunque a veces es solo un parche, es aumentar los tiempos de espera. En Nginx, puedes añadir directivas como proxy_read_timeout 300;. En Apache, la directiva ProxyTimeout 60 puede ayudar. En cuanto a PHP, es vital subir el max_execution_time en el archivo php.ini a 120 o 300 segundos para dar margen a los procesos pesados.
Optimización de aplicaciones PHP (WordPress y Laravel)
En entornos de WordPress, los plugins pesados son los sospechosos habituales. Desactivar aquellos que no sean esenciales puede reducir la carga drásticamente. Además, es muy útil ajustar el intervalo de Heartbeat de WordPress mediante el archivo functions.php para evitar que el sondeo AJAX constante sature el servidor.
Para quienes usan Laravel, la clave está en gestionar las tareas pesadas mediante colas (utilizando Redis o RabbitMQ). En lugar de procesar un envío masivo de correos en tiempo real, se delega a un trabajador en segundo plano. Asimismo, combatir el problema de las consultas N+1 mediante la carga ansiosa (Eager Loading) en Eloquent reduce la cantidad de peticiones a la base de datos, bajando los tiempos de respuesta de segundos a milisegundos.
Estrategias de infraestructura y red
Si el tráfico es muy alto, es momento de escalar. Implementar un balanceador de carga permite distribuir las peticiones entre varios servidores, evitando que uno solo colapse. El uso de sistemas de caché de objetos como Redis o Memcached es fundamental para no tener que consultar la base de datos en cada petición.
Si usas servicios como CloudFront, asegúrate de que el firewall del origen permita el tráfico proveniente de las IPs de AWS. Si el servidor de origen está en una red privada y no es accesible desde Internet, el proxy devolverá inevitablemente un error 504.
El impacto en el SEO y la experiencia de usuario
Tener errores 504 frecuentes es un suicidio para el posicionamiento. Los usuarios que se topan con este fallo tienden a abandonar el sitio inmediatamente, lo que dispara la tasa de rebote. Peor aún, los robots de Google pueden tener problemas para indexar el contenido; si detectan que la web es inestable, las posiciones en los resultados de búsqueda caerán progresivamente.
Para mitigar esto, es recomendable crear una página de error 504 personalizada que sea amable con el usuario, explique que el servidor está saturado y ofrezca enlaces a otras secciones útiles del sitio, evitando así que el visitante cierre la pestaña enfadado.
Comparativa de Hosting según la necesidad
A veces el problema es simplemente que el plan de hosting se queda corto. El hosting compartido es económico pero tiene límites estrictos de procesos PHP, lo que facilita la aparición de timeouts. Un VPS ofrece recursos dedicados y es ideal para webs en crecimiento. Para aplicaciones masivas, un servidor dedicado o la nube (Cloud) con autoescalado es la única forma de garantizar que el servidor cree nuevas instancias automáticamente cuando la CPU alcance el 90%, eliminando así los cuellos de botella.
Mantener una web saludable requiere un equilibrio entre código optimizado, tiempos de espera coherentes y una infraestructura escalable. Desde la simple limpieza de la caché DNS hasta la implementación de colas en Laravel o la optimización de índices en MySQL, cada ajuste cuenta para evitar que el usuario vea esa pantalla blanca de tiempo agotado. La clave reside en el monitoreo constante de los logs y la capacidad de reaccionar antes de que la saturación del servidor afecte a la visibilidad en los buscadores.



