Nginx 504 Gateway Time-out, ¿Cómo corregirlo?

Descripción
En algunas ocasiones, nuestra instalación en el servidor de producción con Nginx, puede que nos devuelva un error 503, aquí te cuento cómo podemos resolverlo.
Instrucciones

Aumentar el timeout en Nginx

Si el backend tarda mucho en responder, aumenta los tiempos de espera.

Edita el archivo de configuración:

 
sudo nano /etc/nginx/nginx.conf
 

o en tu server block:

 
sudo nano /etc/nginx/sites-available/tu-sitio
 

Añade o modifica:

 
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
 

Si usas FastCGI (PHP):

 
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
 

Luego reinicia:

 
sudo systemctl restart nginx
 

2️⃣ Verificar que el backend esté funcionando

Muchas veces el backend está caído.

Ejemplos:

PHP-FPM

 
sudo systemctl status php8.2-fpm
 

Reiniciar:

 
sudo systemctl restart php8.2-fpm
 

Node.js

Verifica si la app corre:

 
pm2 list
 

o

 
ps aux | grep node
 

3️⃣ Revisar logs (muy importante) 🔎

Logs de Nginx:

 
sudo tail -f /var/log/nginx/error.log
 

Logs del sitio:

 
sudo tail -f /var/log/nginx/access.log
 

Ahí normalmente verás el motivo real.


4️⃣ Backend demasiado lento

Puede ocurrir cuando:

  • consultas SQL pesadas

  • APIs externas lentas

  • scripts PHP muy largos

  • servidor sin RAM o CPU

Revisar carga del sistema:

 
top
 

o

 
htop
 

5️⃣ Problema de firewall o red

Si Nginx hace proxy a otro puerto:

Ejemplo:

 
proxy_pass http://127.0.0.1:3000;
 

Prueba si responde:

 
curl http://127.0.0.1:3000
 

Si no responde → el backend no funciona.


6️⃣ Ajustar buffers (casos específicos)

 
proxy_buffers 16 16k;
proxy_buffer_size 32k;
 

Resumen rápido

  1. Aumentar proxy_read_timeout o fastcgi_read_timeout

  2. Verificar backend (PHP / Node / API)

  3. Revisar logs de Nginx

  4. Revisar carga del servidor

  5. Probar conexión al puerto backend

Más Snippets