Header title

Guía para Desarrolladores del Generador de Upstream y Balanceo de Carga Nginx

Genere bloques upstream de Nginx optimizados para producción con round-robin, least_conn, ip_hash, keepalive y comprobaciones pasivas de estado.

Presets label
Input label
Server nodes label4 nodes
#1
Weight:
Max Fails:
Fail Timeout:
Max Conns (0=inf):
#2
Weight:
Max Fails:
Fail Timeout:
Max Conns (0=inf):
#3
Weight:
Max Fails:
Fail Timeout:
Max Conns (0=inf):
#4
Weight:
Max Fails:
Fail Timeout:
Max Conns (0=inf):
Performance tuning
Synchronizes node states across worker processes in multi-core environments.
Pool Conns:
Idle Timeout:
Reduces TCP handshake latency up to 60% by maintaining persistent HTTP/1.1 sockets.
Proxy settings
Server Port:
Server Name:
Location Path:
1# ========================================================
2# Upstream Pool: microservice_api_cluster
3# Load Balancing Method: LEAST_CONN
4# Generated by ToolsAA (100% Client-Side Private Generator)
5# ========================================================
6upstream microservice_api_cluster {
7 # Shared memory zone across all worker processes
8 zone microservice_api_zone 64k;
9
10 # Directs traffic to the server with fewest active connections
11 least_conn;
12
13 # Backend server cluster nodes
14 server 10.0.1.11:8080 weight=5 max_fails=3 max_conns=500;
15 server 10.0.1.12:8080 weight=5 max_fails=3 max_conns=500;
16 server 10.0.1.13:8080 weight=3 max_fails=3 max_conns=300;
17 server 10.0.1.99:8080 max_fails=3 backup;
18
19 # Upstream HTTP/1.1 persistent connection pool
20 keepalive 32;
21 keepalive_requests 1000;
22 keepalive_timeout 60s;
23}
Stats card1
3 Primaries/1 Backups
Active cluster load capacity: 75%
Stats card2
least conn
Worker sync enabled via 64k memory zone
Stats card3
32 idle sockets pool
Standard HTTP/1.1 connection reuse

Client-Side Processing

High-performance processing executed entirely in browser memory.

Zero Server Upload Privacy

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referencia técnica y guía de arquitectura

Guía para Desarrolladores del Generador de Upstream y Balanceo de Carga Nginx — Guía de referencia

Genere bloques upstream de Nginx optimizados para producción con round-robin, least_conn, ip_hash, keepalive y comprobaciones pasivas de estado.

Parámetros clave y controles

serverdirectiva (string)

Especifica la dirección del backend (IP o FQDN), puerto y parámetros de control como weight, max_fails, fail_timeout, backup y down.

Por defecto: server 127.0.0.1:8080 weight=1 max_fails=1 fail_timeout=10s
algorithmdirectiva (enum)

Selecciona el algoritmo de balanceo: round-robin ponderado (predeterminado), least_conn (menor número de conexiones activas), ip_hash (afinidad de sesión por IP) o hash consistente.

Por defecto: round-robin (implícito)
keepaliveinteger

Define la cantidad máxima de conexiones keepalive inactivas hacia los servidores upstream retenidas en la caché de cada proceso worker.

Por defecto: 32
keepalive_requestsinteger

Determina el número máximo de solicitudes que pueden atenderse a través de una sola conexión keepalive antes de cerrarla.

Por defecto: 1000
keepalive_timeouttiempo (string)

Establece el tiempo de espera durante el cual una conexión keepalive inactiva hacia el upstream permanecerá abierta.

Por defecto: 60s
zonestring

Declara el nombre y tamaño de la zona de memoria compartida para sincronizar el estado y configuración del grupo upstream entre los procesos worker.

Por defecto: upstream_backend 64k

Consejos profesionales y mejores prácticas

HTTP/1.1 es obligatorio para Upstream Keepalive

Declarar 'keepalive 32;' no activa por sí solo el pool de conexiones persistentes. En su bloque location debe definir 'proxy_http_version 1.1;' y vaciar la cabecera con 'proxy_set_header Connection "";'. De lo contrario, Nginx usará HTTP/1.0 con Connection: close, forzando un nuevo saludo TCP por cada petición.

Mantenimiento sin interrupciones con flags backup y down

Marque los servidores en mantenimiento con 'down;' para excluir el tráfico de inmediato sin alterar los índices de dispersión hash. Utilice 'backup;' para instancias en espera pasiva que solo reciben tráfico si todos los nodos principales fallan.

Hash Consistente para Clústeres con Caché

Al balancear hacia servicios con estado o sistemas de caché en memoria, configure 'hash $request_uri consistent;' en vez de round-robin. El hash consistente minimiza la reubicación de claves al añadir o remover servidores upstream.

Ajuste fino de proxy_next_upstream para evitar mutaciones duplicadas

Proteja su base de datos frente a ejecuciones repetidas configurando 'proxy_next_upstream error timeout http_502 http_503;'. No agregue 'non_idempotent' a menos que su API gestione solicitudes POST y PATCH de forma estrictamente idempotente.

Errores comunes y solución de problemas

Upstream timed out (110: Connection timed out) o 504 Gateway Timeout

Compruebe las reglas del cortafuegos en el backend y aumente los valores de proxy_connect_timeout, proxy_read_timeout y proxy_send_timeout. En entornos de alta concurrencia, eleve el límite de descriptores de archivo (worker_rlimit_nofile) y worker_connections.

ip_hash redirige todas las solicitudes al mismo nodo backend

Si Nginx opera detrás de Cloudflare, un balanceador AWS ALB o una CDN, todas las IPs de origen coincidirán con la subred del proxy. Cambie a 'hash $http_cf_connecting_ip consistent;' o active el módulo real_ip configurando 'set_real_ip_from' y 'real_ip_header X-Forwarded-For;'.

Errores 502 Bad Gateway intermitentes ante picos de tráfico

La cola de escucha del socket del backend puede estar saturada. Incremente el backlog del kernel del sistema operativo (net.core.somaxconn) y defina 'max_conns' en la directiva server para evitar que los procesos de la aplicación colapsen.

Preguntas frecuentes (FAQ)

¿Cuáles son las diferencias entre Round Robin, least_conn e ip_hash?▼

Round Robin distribuye las peticiones en secuencia ponderada por peso (weight). least_conn entrega cada solicitud al servidor con menos conexiones activas, siendo óptimo para peticiones con tiempos de respuesta muy desiguales. ip_hash calcula un hash a partir de la IP del cliente para garantizar persistencia de sesión hacia el mismo backend.

¿Cómo funcionan las comprobaciones pasivas de estado en Nginx Open Source?▼

Nginx Open Source realiza comprobaciones pasivas mediante 'max_fails' y 'fail_timeout'. Si un servidor falla max_fails intentos consecutivos dentro del periodo fail_timeout, se suspende el envío de tráfico a dicho servidor durante fail_timeout. Las comprobaciones activas periódicas requieren Nginx Plus o módulos externos.

¿Por qué es imprescindible 'proxy_set_header Connection "";' con keepalive?▼

Nginx por defecto reenvía las solicitudes upstream mediante HTTP/1.0 y fuerza la cabecera 'Connection: close'. Al habilitar HTTP/1.1 y limpiar dicha cabecera, se instruye al backend para que mantenga abierto el socket TCP reutilizándolo en futuras peticiones.

¿Cómo manejar resolución DNS dinámica en upstream con Nginx?▼

En Nginx Open Source, los dominios listados dentro del bloque upstream se resuelven solo durante el inicio o recarga del servicio. En arquitecturas dinámicas (Kubernetes o Docker Swarm), declare la URL en una variable (ej. 'set $backend "http://api.internal:8080"; proxy_pass $backend;') junto con una directiva 'resolver' configurada con tiempo de expiración.

Herramientas y utilidades relacionadas

Todas las herramientas →
Conversor de Cron a Kubernetes CronJob YAML y Generador de Especificacionesdeveloper

Transforme expresiones crontab estándar en manifiestos Kubernetes CronJob listos para producción con restartPolicy, concurrencyPolicy, cuotas de recursos y soporte de zona horaria.

Abrir herramienta→
Generador de Esquemas GraphQL SDL desde JSON (Types, Queries e Inputs) - Guía para Desarrolladoresdeveloper

Genera definiciones de tipos de objeto, tipos de entrada (inputs) y esquemas de consultas en GraphQL SDL a partir de objetos JSON.

Abrir herramienta→
Generador de Reglas de Alerta y Registro de Prometheus (PromQL) - Guía para Desarrolladoresdeveloper

Construya y valide visualmente reglas de alerta PromQL, reglas de registro, umbrales, etiquetas y anotaciones de runbook.

Abrir herramienta→
Guía para Desarrolladores: Generador de Tipos de Resolver TypeScript desde GraphQL SDLdeveloper

Genera interfaces de resolver fuertemente tipadas en TypeScript, argumentos de query/mutation y tipos de contexto a partir de esquemas GraphQL SDL.

Abrir herramienta→
Guía de desarrollo del convertidor de cURL a C# (.NET HttpClient, RestSharp y Flurl)developer

Convierta comandos cURL en código C# idiomático para .NET HttpClient, RestSharp o Flurl.Http con patrones asíncronos y mejores prácticas de agrupación de conexiones.

Abrir herramienta→
Guía de desarrollo del convertidor de cURL a Java (Java 11+ HttpClient, OkHttp y Spring WebClient)developer

Convierta comandos cURL en solicitudes HTTP de Java para producción con java.net.http.HttpClient nativo, OkHttp3 o Spring WebClient.

Abrir herramienta→