Icono del sitio Binario 0

Guía completa de tiempos de conexión en Nginx: keepalive_timeout, send_timeout, proxy_read_timeout y proxy_send_timeout

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

En Nginx, el manejo de los tiempos de espera (timeouts) es fundamental para optimizar el rendimiento y evitar bloqueos de recursos. Cada una de estas directivas controla cuánto tiempo Nginx mantiene abiertas las conexiones o espera la transmisión de datos entre el cliente, el proxy (Nginx) y el servidor backend.

A continuación, explicamos cada parámetro en detalle:

1. keepalive_timeout

Función

Define cuánto tiempo Nginx mantiene abierta una conexión keep-alive con el cliente (por ejemplo, un navegador) después de haber completado una solicitud.
Esto permite reutilizar la misma conexión TCP para múltiples peticiones, reduciendo la latencia y el consumo de CPU por apertura de conexiones nuevas.

Valor configurado

keepalive_timeout 3600;3660 segundos (1 hora).

Efecto práctico

2. send_timeout

Función

Es el tiempo máximo que Nginx espera para enviar datos al cliente.
Si el cliente deja de recibir datos o no confirma la recepción dentro de este periodo, Nginx cerrará la conexión.

Valor configurado

send_timeout 3600;3600 segundos (1 hora).

Efecto práctico

3. proxy_read_timeout

Función

Define cuánto tiempo Nginx espera una respuesta completa del servidor backend (proxy_pass) después de enviarle una solicitud.
Si el backend tarda más de ese tiempo en comenzar o continuar enviando datos, Nginx aborta la conexión.

Valor configurado

proxy_read_timeout 3600;3600 segundos (1 hora).

Efecto práctico

4. proxy_send_timeout

Función

Establece el tiempo máximo que Nginx permite para enviar una solicitud completa al backend.
Si no logra transmitir los datos dentro del tiempo especificado, se interrumpe la conexión.

Valor configurado

proxy_send_timeout 3600;3600 segundos (1 hora).

Efecto práctico

Resumen comparativo

DirectivaFlujo de conexiónControlaTiempo configuradoDescripción breve
keepalive_timeoutCliente ↔ NginxReutilización de conexión3600 sCierra conexiones inactivas entre cliente y Nginx.
send_timeoutNginx → ClienteEnvío de datos al cliente3600 sCorta la conexión si el cliente no recibe datos.
proxy_read_timeoutBackend → NginxLectura de respuesta del backend3600 sAborta si el backend tarda en responder.
proxy_send_timeoutNginx → BackendEnvío de solicitud al backend3600 sCierra si Nginx no puede enviar datos al backend.

Recomendaciones generales de ajuste

Tipo de aplicaciónkeepalive_timeoutsend_timeoutproxy_read_timeoutproxy_send_timeout
Sitio web estático30–120 s60 s60 s60 s
API REST / Web dinámica60–300 s60–120 s120–300 s120–300 s
Descargas o streaming300–3600 s600–3600 s600–3600 s600–3600 s
Aplicaciones con backend pesado600–3600 s600–3600 s1200–7200 s600–3600 s

Conclusión

Estas directivas permiten ajustar la resiliencia y eficiencia de Nginx frente a conexiones lentas, procesos largos o clientes inactivos. Configurarlas correctamente según el tipo de aplicación evita errores 504/502, mejora la experiencia del usuario y optimiza el uso de recursos del servidor.

Salir de la versión móvil