Como Configurar um Proxy Reverso com Nginx para uma Aplicação Node.js
Olá! Aqui é a Sensei da GeHost 🧘♀️ E hoje vamos falar de um tema que deixa muita gente de cabelo em pé: colocar uma aplicação Node.js "conversando" com o mundo através do Nginx. Parece complicado, mas prometo que, passo a passo, faz todo sentido. Vamos com calma!
Antes de começar: essa configuração envolve acesso ao servidor via linha de comando (SSH) e normalmente é feita em ambientes com acesso mais avançado (como um VPS ou servidor dedicado). Se você não sabe se o seu plano permite esse tipo de configuração, não tem problema — fale com o nosso suporte pelo painel.gehost.com.br e a equipe te orienta certinho sobre o que é possível no seu caso.
O que é um proxy reverso, afinal?
Pensa assim: sua aplicação Node.js roda "escondida" em uma porta interna do servidor (por exemplo, a porta 3000). Só que os visitantes do seu site não devem — e nem conseguem — acessar essa porta diretamente. O Nginx entra como um "recepcionista": ele recebe todas as visitas na porta padrão da web (80 para HTTP e 443 para HTTPS) e encaminha essa conversa, por trás dos bastidores, para a sua aplicação Node.js.
Isso traz vantagens enormes:
- Você pode usar um domínio "bonito" (como seusite.com.br) em vez de expor uma porta estranha para o visitante;
- Fica muito mais fácil ativar o certificado SSL (o cadeado de segurança) sem mexer no código da aplicação;
- O Nginx ajuda a organizar o tráfego, servir arquivos estáticos com mais eficiência e até rodar mais de uma aplicação no mesmo servidor.
Passo 1 — Garanta que sua aplicação Node.js está rodando
Antes de mexer no Nginx, confirme que sua aplicação já está funcionando localmente no servidor, em uma porta interna. O exemplo mais comum é a porta 3000. Teste com um comando simples direto no terminal do servidor:
curl http://localhost:3000
Se aparecer uma resposta (mesmo que seja um HTML "cru"), ótimo — sua aplicação está de pé e pronta para receber visitas por trás do proxy.
Passo 2 — Mantenha a aplicação sempre ativa com um gerenciador de processos
Um detalhe importante: se você simplesmente rodar node app.js no terminal, a aplicação para assim que você fechar a sessão. Para evitar isso, o mercado usa muito uma ferramenta chamada PM2, que mantém sua aplicação rodando em segundo plano e a reinicia automaticamente se ela cair.
- Instale o PM2 globalmente:
npm install -g pm2 - Inicie sua aplicação com ele:
pm2 start app.js --name "minha-app" - Configure para iniciar junto com o servidor:
pm2 startupe depoispm2 save
Dica da Sensei: use pm2 list sempre que quiser ver se sua aplicação está "viva" e saudável. É o primeiro lugar para olhar se algo parecer fora do ar.
Passo 3 — Crie o arquivo de configuração do Nginx
Agora vem a parte principal! Você vai criar (ou editar) um arquivo de configuração do Nginx para o seu domínio. Geralmente esses arquivos ficam em um diretório de configurações de sites do servidor. Um exemplo de conteúdo básico seria:
server {
listen 80;
server_name seudominio.com.br www.seudominio.com.br;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Vamos entender rapidinho cada linha importante:
- server_name: aqui entra o seu domínio, exatamente como ele foi apontado nos registros de DNS.
- proxy_pass: é o endereço interno onde sua aplicação Node.js está escutando — é essa linha que faz a "ponte".
- proxy_set_header Upgrade / Connection: essas linhas são essenciais se sua aplicação usa WebSockets (chats, notificações em tempo real, etc).
Passo 4 — Ative a configuração e teste
- Verifique se não há erros de sintaxe no arquivo:
nginx -t - Se tudo estiver certo, recarregue o Nginx:
systemctl reload nginx - Acesse seu domínio no navegador e veja se a aplicação Node.js responde normalmente.
Se der algum erro, o comando nginx -t é seu melhor amigo — ele sempre aponta a linha exata onde algo ficou fora do padrão.
Passo 5 — Ative o certificado SSL (o cadeado de segurança)
Com o proxy funcionando em HTTP, o próximo passo natural é ativar o HTTPS, para que seus visitantes vejam o cadeadinho verde e seus dados trafeguem criptografados. Isso costuma ser feito com uma ferramenta de emissão de certificado gratuito, que ajusta automaticamente o arquivo de configuração do Nginx para redirecionar tudo para HTTPS.
Dica da Sensei: nunca pule essa etapa! Além de passar mais confiança para quem visita seu site, o HTTPS também influencia no posicionamento em buscadores como o Google.
Erros comuns (e como resolver com tranquilidade)
- "502 Bad Gateway": normalmente significa que o Nginx não conseguiu falar com sua aplicação Node.js. Confira se ela está rodando (
pm2 list) e se a porta configurada noproxy_passé exatamente a mesma que a aplicação está usando. - Site não atualiza depois de uma mudança: lembre-se sempre de rodar
nginx -tseguido desystemctl reload nginxapós qualquer alteração no arquivo de configuração. - WebSockets não funcionam: revise se as linhas de
UpgradeeConnectionestão presentes no bloco de configuração, como mostramos no Passo 3.
Precisa de uma mãozinha?
Configurações de servidor podem envolver detalhes bem específicos do seu ambiente. Se em algum momento você travar ou não tiver certeza se pode seguir com essa configuração no seu plano, é só abrir um chamado pelo painel.gehost.com.br — a equipe de suporte da GeHost está pronta para te ajudar com carinho e paciência. 💙