Como Configurar um Proxy Reverso com Nginx
Bem-vindo, amigo! 👋
Se você chegou aqui, provavelmente ouviu falar em "proxy reverso com Nginx" e pensou: "mas que bicho é esse?". Relaxa! Vou descomplicar tudo pra você. A gente vai aprender, passo a passo, como colocar um Nginx na frente do seu site para melhorar a performance, segurança e distribuir o trâfego. Bora lá?
O que é um Proxy Reverso?
Imagina que o seu site é um atendente em um balcão. Um proxy reverso é como um recepcionista que fica ANTES do atendente. Quando alguém chega pedindo algo, o recepcionista (Nginx) decide pra qual atendente encaminhar, conversa com o cliente no lugar dele, e ainda pode deixar algumas respostas em cache (guardadas) pra responder mais rápido da próxima vez.
Por que usar?
- ⚡ Mais velocidade (cache de respostas)
- 🛡️ Mais segurança (seu servidor real fica escondido)
- 📊 Distribuir carga entre vários servidores
- 🔄 Atualizar servidores sem descer o site
Pré-requisitos
Você vai precisar de:
- Acesso SSH ao servidor (ou painel de controle que permita editar configurações)
- Um servidor rodando sua aplicação (Node.js, Python, PHP-FPM, etc.) em uma porta específica — vamos chamar de porta 3000 neste guia (seu caso pode ser diferente)
- Permissão pra instalar/editar pacotes
- Um domínio apontado pro servidor
Passo 1: Instalar o Nginx
Se você ainda não tem o Nginx instalado, vamos fazer:
- Abra o terminal/SSH do seu servidor
- Atualize a lista de pacotes:
sudo apt update
- Instale o Nginx:
sudo apt install nginx
- Inicie o serviço:
sudo systemctl start nginx
- Deixe rodando sempre (auto-iniciar no boot):
sudo systemctl enable nginx
Dica: Se o servidor já usa porta 80 (HTTP) ou 443 (HTTPS), o Nginx pode reclamar. Nesse caso, a gente resolve depois.
Passo 2: Entender a Estrutura de Configuração
O Nginx guarda suas configurações em um arquivo. Não se assuste — é bem simples. O arquivo principal está aqui:
/etc/nginx/nginx.conf
Mas o LEGAL é que a gente cria arquivos separados dentro de uma pasta chamada sites-available e depois "ativa" eles. É como ter várias receitas em fichas diferentes, em vez de uma receita gigante, né?
Passo 3: Criar a Configuração do Proxy Reverso
Vamos criar um arquivo novo pra sua configuração:
- Abra o editor de texto (nano é mais fácil pra iniciante):
sudo nano /etc/nginx/sites-available/seu-dominio.conf
(troque seu-dominio pelo nome do seu domínio, ex.: exemplo.com.conf) - Cole o conteúdo abaixo (vou explicar cada parte depois):
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
# Aqui, o Nginx "fala" com seu servidor real
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
} - Salve o arquivo (em nano: Ctrl + O, depois Enter, depois Ctrl + X)
Entendendo a Configuração
O que significa cada linha?
- listen 80; — Nginx escuta na porta 80 (HTTP padrão)
- server_name seu-dominio.com; — O domínio que vai redirecionar pra cá
- proxy_pass http://127.0.0.1:3000; — A MÁGICA! Aqui é onde você diz: "ei Nginx, redireciona TUDO pro meu servidor na porta 3000"
- proxy_http_version 1.1; — Usa a versão 1.1 do HTTP (mais moderna)
- proxy_set_header... — Passa informações pro seu servidor real saber quem é o cliente de verdade (senão seu app acha que TUDO vem do Nginx)
E se meu servidor real está em outra máquina? Troque 127.0.0.1 pelo IP do outro servidor. Exemplo: proxy_pass http://192.168.1.100:3000;
Passo 4: Ativar a Configuração
Legal, criamos o arquivo. Agora a gente "ativa":
- Crie um link simbólico pra pasta sites-enabled (é como "ligar um botão"):
sudo ln -s /etc/nginx/sites-available/seu-dominio.conf /etc/nginx/sites-enabled/seu-dominio.conf
- Teste se a configuração tá certa (evita quebrar o Nginx):
sudo nginx -t
Se der "test is successful", tá perfeito! Se der erro, volta no arquivo e confere a sintaxe.
- Recarregue o Nginx (sem desligar):
sudo systemctl reload nginx
Passo 5: Testar Tudo
Agora vem a hora da verdade:
- Abra o navegador
- Acesse seu-dominio.com
- Se vir seu site funcionando, PARABÉNS! 🎉 O proxy reverso está funcionando!
- Se não funcionar, verifica:
- O DNS do domínio está apontando pro servidor?
- Seu servidor real (porta 3000) está rodando?
- A porta 3000 é realmente a correta?
Bônus: Adicionar HTTPS (SSL/TLS) com Let's Encrypt
Quer fazer seu site ainda mais seguro (aquele cadeadinho verde)? Vamos adicionar certificado grátis:
- Instale o Certbot (ferramenta que gera certificado automático):
sudo apt install certbot python3-certbot-nginx
- Execute:
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
- Responda as perguntas (e-mail pra avisos, aceitar termos, etc.)
- Pronto! O Certbot vai mexer na sua configuração automaticamente e adicionar HTTPS.
Aviso: O certificado expira em 90 dias, mas o Certbot renova automático. Nada pra você fazer!
Dicas Extras pra Ficar Fera
💡 Cache — Quer deixar as respostas em cache? Adiciona isso dentro do bloco location: proxy_cache_valid 200 10m; (guarda respostas 200 por 10 minutos)
⏱️ Timeout — Se seu servidor é lento, Nginx pode achar que desligou. Aumenta o timeout assim: proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s;
📊 Balancear Carga — Tem 2+ servidores? Distribui a carga: upstream backend {
server 192.168.1.100:3000;
server 192.168.1.101:3000;
}
Depois usa proxy_pass http://backend; em vez de um IP só.
Troubleshooting: O que Fazer se Não Funcionar
🔍 502 Bad Gateway (Nginx não consegue falar com o servidor real)
- Verifica se o servidor real tá rodando: sudo systemctl status seu-servico
- Verifica a porta correta: sudo netstat -tuln | grep 3000
🔍 Connection refused
- Firewall tá bloqueando? Abre a porta: sudo ufw allow 3000
- Ou o IP no proxy_pass tá errado?
🔍 Timeout (site demora muito ou cai)
- Aumenta os timeouts (vê dica acima)
- Seu servidor real tá lento? Precisa otimizar lá, Nginx é só o porteiro
Resumão Final
Você aprendeu a:
- ✅ Instalar Nginx
- ✅ Criar uma configuração de proxy reverso
- ✅ Ativar e testar
- ✅ Adicionar HTTPS
- ✅ Resolver problemas comuns
Seu site agora tem um recepcionista super eficiente na porta, entregando as requisições do jeito certo, protegendo seu servidor real e deixando tudo mais rápido. Você é fera! 🚀
Precisa de Help?
Se bater alguma dúvida ou der problema, a gente tá aqui! Abre um ticket de suporte ou manda uma mensagem — a Sensei da GeHost resolve pra você! 😊