O que é um proxy reverso (e por que você precisa dele)
Imagine que sua aplicação está rodando na sua VPS, mas numa porta "escondida", tipo 3000 ou 8080. Se você deixar do jeito que está, seus visitantes vão precisar digitar seudominio.com:3000 pra acessar — feio, pouco profissional e, o pior, sem HTTPS.
O Nginx como proxy reverso resolve isso: ele fica "na porta da frente" (80 e 443, as portas padrão da web), recebe as visitas normais em https://seudominio.com e, por baixo dos panos, repassa cada requisição pra sua aplicação na porta interna. O visitante nunca precisa saber que existe uma porta 3000 rodando ali atrás.
Dica da Sensei: pense no Nginx como o recepcionista de um prédio. Ele fica na entrada, recebe todo mundo educadamente e só depois encaminha cada visitante pra sala certa lá dentro.
Pré-requisitos
- Uma VPS com acesso root/SSH (essa configuração é feita por linha de comando, então não se aplica à hospedagem compartilhada com cPanel).
- Sua aplicação já rodando e escutando numa porta local, por exemplo
127.0.0.1:3000. - O domínio já apontando pro IP da sua VPS (registro A no DNS). Se ainda não fez isso, ajuste primeiro e espere a propagação antes de seguir.
Passo a passo
1. Instale o Nginx
Conecte na sua VPS via SSH e instale o pacote. Em distribuições baseadas em Debian/Ubuntu:
sudo apt update sudo apt install nginx -y
Em AlmaLinux/CentOS:
sudo dnf install nginx -y sudo systemctl enable --now nginx
2. Confirme que sua aplicação está rodando
Antes de configurar o proxy, teste se a aplicação responde localmente. Se ela está na porta 3000, rode:
curl http://127.0.0.1:3000
Se aparecer alguma resposta (mesmo que um erro HTML), ótimo — o app está de pé. Se der "Connection refused", resolva isso primeiro: não adianta configurar o proxy pra uma porta que não tem nada escutando.
3. Crie o arquivo de configuração do site
Crie um novo arquivo de configuração pro seu domínio (em vez de mexer no arquivo padrão):
sudo nano /etc/nginx/sites-available/seudominio.com
Cole o conteúdo abaixo, trocando seudominio.com pelo seu domínio real e 3000 pela porta da sua aplicação:
server {
listen 80;
server_name seudominio.com www.seudominio.com;
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;
proxy_cache_bypass $http_upgrade;
}
}
Por que esses cabeçalhos? Eles garantem que sua aplicação "enxergue" corretamente o domínio original, o IP real do visitante e, se você usa WebSocket (chat, notificações em tempo real), que a conexão não caia. Vale copiar exatamente assim.
4. Ative o site
Em servidores Debian/Ubuntu, crie um link simbólico pra pasta de sites ativos:
sudo ln -s /etc/nginx/sites-available/seudominio.com /etc/nginx/sites-enabled/
Em AlmaLinux/CentOS, normalmente basta colocar o arquivo direto em /etc/nginx/conf.d/seudominio.com.conf — não existe a pasta sites-available por padrão.
5. Teste a configuração antes de aplicar
Esse passo é sagrado: o Nginx tem um comando que testa se a sintaxe está correta sem derrubar o servidor:
sudo nginx -t
Se aparecer syntax is ok e test is successful, pode seguir. Se der erro, ele te mostra exatamente a linha do problema — revise o arquivo com calma.
6. Recarregue o Nginx
sudo systemctl reload nginx
Pronto! Agora, ao acessar http://seudominio.com, o Nginx vai receber a visita e repassar tudo pra sua aplicação na porta interna, de forma transparente.
7. Adicione HTTPS (essencial)
Nunca deixe seu site apenas em HTTP. Com o domínio já resolvendo pro Nginx, o jeito mais simples de ativar SSL gratuito é com o Certbot:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d seudominio.com -d www.seudominio.com
O Certbot detecta automaticamente o bloco server que você criou, emite o certificado e já ajusta a configuração pra redirecionar HTTP → HTTPS pra você. Simples assim.
Erros comuns (e como resolver)
- 502 Bad Gateway: geralmente significa que sua aplicação não está rodando ou está numa porta diferente da que você configurou no
proxy_pass. Confira com o comandocurldo passo 2. - Configuração não aplica: lembre de sempre rodar
nginx -te depoissystemctl reload nginx— só editar o arquivo não é suficiente. - Site cai quando eu fecho o terminal SSH: isso é sobre a aplicação, não sobre o Nginx — use um gerenciador de processos (como PM2, para Node.js, ou um serviço systemd) pra manter o app rodando em segundo plano.
Última dica da Sensei: proxy reverso é uma configuração de servidor — se você não tem familiaridade com terminal e SSH, não tem problema nenhum em pedir apoio ao suporte da GeHost pelo painel. Configuração errada de Nginx pode deixar seu site fora do ar, então prefira ir com calma e testar cada passo antes de seguir pro próximo.