¿Cómo solucionar el error "Nginx Upstream cerró prematuramente la conexión mientras leía la respuesta del header desde Upstream"?

Publicado 17 de octubre de 2024

Problema: Error de conexión Nginx Upstream

El error "Nginx upstream prematurely closed connection while reading response header from upstream" ocurre cuando Nginx no puede obtener una respuesta completa de un servidor upstream. Este problema puede interrumpir aplicaciones web y servicios. A menudo resulta en solicitudes incompletas o fallidas, afectando el rendimiento y la confiabilidad del sistema.

Solución: Ajustar la configuración de Nginx

Aumentar los tiempos de espera

Para solucionar el error "Upstream Prematurely Closed Connection", puedes ajustar la configuración de tiempos de espera en Nginx:

  • Modificar proxy_read_timeout: Este ajuste controla cuánto tiempo espera Nginx a que el servidor upstream envíe datos. Aumenta este valor para permitir más tiempo para respuestas grandes:
proxy_read_timeout 300s;
  • Ajustar proxy_connect_timeout: Este ajuste determina cuánto tiempo espera Nginx para establecer una conexión con el servidor upstream. Aumenta este valor si tu servidor upstream tarda más en responder:
proxy_connect_timeout 75s;
  • Establecer send_timeout: Este ajuste especifica cuánto tiempo espera Nginx a que el cliente acepte datos. Ajusta este valor según las necesidades de tu aplicación:
send_timeout 60s;

Consejo: Monitorear y ajustar

Después de hacer cambios en los ajustes de tiempo de espera, monitorea el rendimiento de tu servidor y ajusta los valores según sea necesario. Comienza con aumentos conservadores y ajusta gradualmente según tus requisitos específicos y patrones de tráfico.

Optimizar la configuración de buffers

Optimizar la configuración de buffers puede ayudar a prevenir el error "Upstream Prematurely Closed Connection":

  • Configurar proxy_buffers: Este ajuste determina el número y tamaño de los buffers para leer la respuesta del servidor upstream. Ajusta estos valores según los recursos de tu servidor y los tamaños de respuesta típicos:
proxy_buffers 8 16k;
  • Ajustar proxy_buffer_size: Este ajuste especifica el tamaño del buffer usado para leer la primera parte de la respuesta del servidor upstream. Aumenta este valor para encabezados más grandes:
proxy_buffer_size 32k;
  • Afinar large_client_header_buffers: Este ajuste controla el número máximo y tamaño de los buffers usados para leer encabezados de solicitud de cliente grandes. Ajusta estos valores si estás manejando solicitudes con encabezados grandes:
large_client_header_buffers 4 32k;

Al ajustar estos parámetros de configuración de Nginx, a menudo puedes solucionar el error "Upstream Prematurely Closed Connection" y mejorar la capacidad de tu servidor para manejar respuestas grandes y solicitudes complejas.