Header title

Guia do Desenvolvedor: Gerador de Configuração Nginx Upstream e Balanceamento de Carga

Gere blocos Nginx upstream prontos para produção com round-robin, least_conn, ip_hash, conexões keepalive e health check passivo.

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.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de Configuração Nginx Upstream e Balanceamento de Carga — Guia de referência

Gere blocos Nginx upstream prontos para produção com round-robin, least_conn, ip_hash, conexões keepalive e health check passivo.

Parâmetros principais e controles

serverdiretiva (string)

Especifica o endereço do backend (IP ou FQDN), porta e parâmetros de controle como weight, max_fails, fail_timeout, backup e down.

Padrão: server 127.0.0.1:8080 weight=1 max_fails=1 fail_timeout=10s
algorithmdiretiva (enum)

Define o algoritmo de distribuição: round-robin ponderado (padrão), least_conn (menor número de conexões ativas), ip_hash (afinidade por IP do cliente) ou hash consistente genérico.

Padrão: round-robin (implícito)
keepaliveinteger

Define o número máximo de conexões keepalive ociosas aos servidores upstream mantidas no cache de cada processo worker.

Padrão: 32
keepalive_requestsinteger

Determina o número máximo de requisições que podem ser atendidas por uma única conexão keepalive antes de ser encerrada.

Padrão: 1000
keepalive_timeouttempo (string)

Define o tempo limite durante o qual uma conexão keepalive ociosa ao servidor upstream permanecerá aberta.

Padrão: 60s
zonestring

Define o nome e o tamanho da zona de memória compartilhada para sincronizar o estado e a configuração do upstream entre todos os processos worker.

Padrão: upstream_backend 64k

Dicas profissionais e melhores práticas

HTTP/1.1 é indispensável para Upstream Keepalive

Declarar apenas 'keepalive 32;' não habilita o pool de conexões persistentes. No bloco location, é obrigatório definir 'proxy_http_version 1.1;' e limpar o cabeçalho com 'proxy_set_header Connection "";'. Sem isso, o Nginx adota HTTP/1.0 com 'Connection: close', forçando um novo handshake TCP a cada requisição.

Manutenção sem indisponibilidade com flags backup e down

Utilize a flag 'down;' em instâncias que passarão por manutenção para desviar o tráfego sem quebrar a distribuição de hashes existentes. Configure 'backup;' em servidores secundários para que só recebam requisições caso todos os nós principais estejam indisponíveis.

Consistent Hashing para Clusters de Cache

Ao distribuir tráfego para sistemas com cache local ou renderização SSR, prefira 'hash $request_uri consistent;' em vez de round-robin. O hashing consistente minimiza a invalidação em massa de cache quando instâncias são adicionadas ou removidas.

Ajuste seguro da diretiva proxy_next_upstream

Evite mutações duplicadas no banco de dados configurando 'proxy_next_upstream error timeout http_502 http_503;'. Não inclua a opção 'non_idempotent' a menos que suas operações POST e PATCH sejam 100% idempotentes por design.

Problemas comuns e solução de problemas

Upstream timed out (110: Connection timed out) ou erro 504 Gateway Timeout

Verifique regras de firewall no backend e aumente os tempos limites de proxy_connect_timeout, proxy_read_timeout e proxy_send_timeout. Em servidores com alto volume de tráfego, amplie worker_connections e o limite de descritores de arquivo (worker_rlimit_nofile).

ip_hash envia todo o tráfego para um único nó de backend

Se o Nginx estiver atrás de Cloudflare, AWS ALB ou CDN, todas as conexões chegarão com os IPs dos nós de borda. Utilize 'hash $http_cf_connecting_ip consistent;' ou configure o módulo real_ip com 'set_real_ip_from' e 'real_ip_header X-Forwarded-For;'.

Erros 502 Bad Gateway esporádicos durante picos de carga

A fila de escuta de sockets do backend pode estar saturando. Aumente o backlog do sistema operacional (net.core.somaxconn) e defina o parâmetro 'max_conns' na diretiva server para proteger as instâncias de sobrecarga.

Perguntas frequentes (FAQ)

Qual é a diferença entre Round Robin, least_conn e ip_hash no Nginx?▼

O Round Robin alterna requisições sequencialmente respeitando o peso (weight) configurado. O least_conn encaminha a solicitação ao servidor com o menor número de conexões ativas no momento, ideal para tarefas com durações variadas. O ip_hash gera um hash com base no IP do cliente para persistir a sessão na mesma instância de backend.

Como funciona o health check passivo no Nginx Open Source?▼

O Nginx monitora os nós passivamente através dos parâmetros 'max_fails' e 'fail_timeout'. Se uma instância falhar max_fails vezes consecutivas no intervalo de fail_timeout, ela é considerada indisponível e deixa de receber tráfego durante o período fail_timeout. Verificações ativas periódicas exigem Nginx Plus ou módulos Lua.

Por que 'proxy_set_header Connection "";' é obrigatório com keepalive?▼

Por padrão, o proxy reverso do Nginx encaminha chamadas usando a especificação HTTP/1.0 e envia 'Connection: close'. Configurar HTTP/1.1 e limpar o cabeçalho Connection sinaliza ao backend que o socket TCP deve permanecer aberto para receber as próximas requisições do pool.

Como configurar resolução DNS dinâmica com Nginx Upstream?▼

No Nginx padrão, nomes DNS declarados em blocos upstream são resolvidos apenas na inicialização. Em ambientes com IPs dinâmicos (Kubernetes ou AWS ECS), utilize uma variável no proxy_pass (ex.: 'set $backend "http://api.internal:8080"; proxy_pass $backend;') em conjunto com uma diretiva 'resolver' com tempo de validade definido.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Conversor de Cron para Kubernetes CronJob YAML e Gerador de Especificaçõesdeveloper

Converta expressões crontab padrão em manifestos Kubernetes CronJob prontos para produção com restartPolicy, concurrencyPolicy, limites de recursos e suporte a fuso horário.

Abrir ferramenta→
Gerador de Esquemas GraphQL SDL a partir de JSON (Types, Queries e Inputs) - Guia do Desenvolvedordeveloper

Gere tipos de objeto, tipos de entrada (inputs) e esquemas de consulta na linguagem de definição de esquemas (SDL) do GraphQL a partir de JSON.

Abrir ferramenta→
Gerador de Regras de Alerta e Gravação Prometheus (PromQL) - Guia do Desenvolvedordeveloper

Construa e valide visualmente regras de alerta PromQL, regras de gravação (recording rules), limites, rótulos e anotações de runbook.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Tipos de Resolver TypeScript a partir de GraphQL SDLdeveloper

Gere interfaces de resolver TypeScript fortemente tipadas, argumentos de query/mutation e tipos de contexto a partir de esquemas GraphQL SDL.

Abrir ferramenta→
Guia do Desenvolvedor: Conversor de cURL para C# (.NET HttpClient, RestSharp e Flurl)developer

Converta comandos cURL em código C# idiomático para .NET HttpClient, RestSharp ou Flurl.Http com padrões assíncronos e melhores práticas de pool de conexões.

Abrir ferramenta→
Guia do Desenvolvedor: Conversor de cURL para Java (Java 11+ HttpClient, OkHttp e Spring WebClient)developer

Converta comandos cURL em requisições HTTP Java prontas para produção com java.net.http.HttpClient nativo, OkHttp3 ou Spring WebClient.

Abrir ferramenta→