Aprenda / Redes e Internet

FundamentosAula 6 de 1618 min0% da trilha

Proxy reverso — o que é e como funciona (nginx)

O servidor que fica na frente do seu servidor de verdade — e por que quase todo site em produção tem um.

Um proxy reverso é um servidor que recebe todas as requisições primeiro, e as repassa pro servidor de aplicação de verdade — o cliente nunca fala diretamente com o servidor que roda seu Next.js/Rails. Isso parece uma etapa extra sem necessidade, mas resolve vários problemas de uma vez.

Navegador
Nginx (proxy)
App (Next.js/Rails)

Clique em “Reproduzir fluxo” para ver a requisição passo a passo.

O que um proxy reverso resolve

TLS/HTTPS num lugar só      → nginx cuida do certificado; a app roda HTTP simples internamente
Servir arquivo estático      → nginx entrega imagem/CSS direto, sem acionar a app pra isso
Compressão (gzip)             → reduz o tamanho da resposta antes de sair pro cliente
Esconder a estrutura interna  → o cliente nunca sabe em qual porta/IP a app real está rodando
Roteamento por caminho        → /api/* vai pra um serviço, /* vai pro app

Um nginx.conf básico

nginx.conf
server {
  listen 443 ssl;
  server_name howtodev.site;

  ssl_certificate     /etc/ssl/certs/howtodev.crt;
  ssl_certificate_key /etc/ssl/private/howtodev.key;

  location / {
    proxy_pass http://127.0.0.1:3000;       # repassa pro Next.js rodando localmente
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }

  location /api/ {
    proxy_pass http://127.0.0.1:3001;       # /api vai pra um serviço diferente
  }
}

proxy_set_header X-Real-IP importa porque, sem isso, a aplicação veria toda requisição vindo do próprio nginx (localhost) — esse header preserva o IP real de quem fez a requisição original, útil pra rate limiting e logs de auditoria.

Exercício

Por que faz sentido o nginx cuidar do certificado TLS, em vez de configurar HTTPS diretamente dentro do processo Next.js/Rails?

Quiz rápido

No modelo de proxy reverso, com quem o navegador do cliente realmente conversa?
Pra que serve o header X-Real-IP configurado no proxy_pass?