Load Balancer vs Reverse Proxy — Qual é a diferença
Introdução
Load Balancer e Reverse Proxy são dois componentes fundamentais da infraestrutura de rede que costumam ser confundidos. Ambos ficam entre clientes e servidores, ambos aceitam requisições e as encaminham. No entanto, seus objetivos e funcionalidades são diferentes.
Na prática, muitas ferramentas combinam os dois papéis (Nginx, HAProxy), o que intensifica ainda mais a confusão. Vamos analisar em detalhes.
Reverse Proxy — o que ele faz
Um Reverse Proxy é um servidor que aceita requisições dos clientes em nome dos servidores backend. O cliente não sabe com qual servidor específico está se comunicando.
Funções principais
Ocultação da infraestrutura — os clientes veem apenas o IP do proxy, não os servidores reais. Isso aumenta a segurança.
Terminação SSL — o proxy cuida do SSL/TLS, tirando as operações criptográficas dos servidores backend.
Cache — armazenamento de respostas para requisições repetidas sem contatar o backend.
Compressão — compressão gzip/brotli das respostas para economizar banda.
Proteção contra ataques — filtragem de requisições maliciosas, proteção contra DDoS.
Reescrita de URL — modificação dos caminhos da requisição antes do encaminhamento ao backend.
Injeção de cabeçalhos — X-Real-IP, X-Forwarded-For e outros cabeçalhos de serviço.
Load Balancer — o que ele faz
Um Load Balancer é um servidor que distribui as requisições recebidas entre vários servidores backend para otimizar a carga e garantir tolerância a falhas.
Funções principais
Distribuição de carga — distribuição uniforme das requisições entre os servidores conforme um algoritmo definido.
Health checking — verificação contínua da disponibilidade dos servidores backend. Servidores indisponíveis são removidos do pool.
Persistência de sessão — vinculação da sessão de um usuário a um único servidor (sticky sessions).
Tolerância a falhas — redirecionamento automático do tráfego em caso de falha de um servidor.
Escalabilidade — adição de novos servidores sem downtime.
Algoritmos de balanceamento
| Algoritmo | Descrição | Quando usar |
|---|---|---|
| Round Robin | Distribuição sequencial | Servidores idênticos |
| Weighted Round Robin | Considera o peso do servidor | Servidores de capacidade variada |
| Least Connections | Para o servidor com menos conexões | Requisições de duração variada |
| IP Hash | Baseado no hash do IP do cliente | Persistência de sessão necessária |
| Least Response Time | Para o servidor mais rápido | A velocidade é crítica |
| Random | Seleção aleatória | Simplicidade |
Comparação
| Parâmetro | Reverse Proxy | Load Balancer |
|---|---|---|
| Objetivo principal | Intermediário entre cliente e servidor | Distribuição de carga |
| Servidores backend | 1+ | 2+ (normalmente) |
| Terminação SSL | Sim | Não necessariamente |
| Cache | Sim | Não |
| Health checks | Básicos | Avançados |
| Balanceamento | Básico | Avançado |
| Compressão | Sim | Não |
| Reescrita de URL | Sim | Não |
| L4 (TCP) | Alguns | Sim |
| L7 (HTTP) | Sim | Sim |
Quando eles se sobrepõem
Na realidade, a maioria das ferramentas combina os dois papéis:
Nginx — começou como reverse proxy, mas suporta balanceamento upstream com health checks, weighted round robin e least connections.
HAProxy — começou como load balancer, mas suporta terminação SSL, cabeçalhos e ACLs para roteamento.
Envoy — projetado como um proxy universal com suporte completo aos dois papéis, além de service mesh.
Traefik — configuração automática para contêineres, reverse proxy + load balancer.
Níveis de balanceamento
L4 (camada de transporte)
Balanceamento no nível TCP/UDP. O balanceador vê apenas o IP e a porta; não analisa o conteúdo da requisição. Rápido, mas sem roteamento dependente de conteúdo.
L7 (camada de aplicação)
Balanceamento no nível HTTP. Analisa URL, cabeçalhos, cookies. Permite roteamento com base no conteúdo da requisição. Mais lento que L4, porém mais flexível.
Exemplo da diferença
L4 vê: conexão TCP na porta 443 → distribui conforme o algoritmo.
L7 vê: GET /api/users com Cookie: session=abc123 → roteia para um backend específico.
Aplicação no setor de proxies
Provedores de proxy
Os provedores de proxy usam os dois componentes:
Reverse Proxy — um gateway frontal que aceita as conexões dos clientes, trata a autenticação e roteia para o pool de IPs adequado.
Load Balancer — distribui as requisições entre pools de servidores proxy em diferentes data centers para tolerância a falhas.
Infraestrutura própria
Ao montar sua própria fazenda de proxies:
1. Um Load Balancer na entrada distribui o tráfego entre os servidores proxy
2. Cada servidor proxy atua como forward proxy para os sites de destino
3. Health checks verificam a disponibilidade de cada proxy
O que escolher
Você precisa apenas de um Reverse Proxy se:
- Você tem um único servidor backend
- São necessários terminação SSL e cache
- Você quer ocultar sua infraestrutura
Você precisa de um Load Balancer se:
- Há vários servidores backend
- É exigida tolerância a falhas
- A distribuição igual da carga é crítica
Você precisa dos dois (o que ocorre com mais frequência):
- Use Nginx, HAProxy ou Traefik — eles fazem as duas coisas
Conclusão
Reverse Proxy e Load Balancer são dois aspectos de uma mesma tarefa: gerenciar o tráfego entre clientes e servidores. O Reverse Proxy foca nas funções de intermediação (SSL, cache, segurança), enquanto o Load Balancer foca na distribuição de carga e na tolerância a falhas. Na infraestrutura moderna, o mais comum é usar uma ferramenta que combine os dois papéis.
