Bem-vindo(a) à aula de hoje, grasshopper! 🥋
Se você tem uma aplicação Node.js rodando e quer deixá-la acessível de forma segura, rápida e "profissional" pelo seu domínio (sem aparecer aquela porta feia tipo :3000 na URL), este é o guia certo. Vamos configurar o Nginx como proxy reverso — ou seja, o Nginx vai "receber" as visitas no seu domínio e repassar tudo, nos bastidores, pra sua aplicação Node.js.
Antes de começar — atenção, discípulo(a): esse tipo de configuração (Nginx + Node.js rodando como processo próprio) é algo feito em um servidor com acesso root/SSH, geralmente de forma manual via terminal. Se você está em um plano de hospedagem cPanel da GeHost, esse não costuma ser o caminho — o cPanel tem recursos próprios para publicar aplicações Node.js. Nesse caso, fale com o nosso suporte antes de sair digitando comando: eles te mostram a forma certinha para o seu plano. 😉
O que é um proxy reverso, afinal?
Pense no Nginx como um recepcionista educado. Quando alguém visita seudominio.com.br, é o Nginx quem atende na porta da frente (porta 80/443, o "endereço padrão da web"). Só que, em vez de responder ele mesmo, ele leva o visitante até a sala certa — no caso, sua aplicação Node.js, que geralmente está rodando internamente em uma porta como 3000.
Vantagens de usar esse recepcionista:
- Você esconde a porta interna da aplicação (mais segurança e uma URL mais limpa).
- O Nginx cuida do certificado SSL (o cadeado 🔒) para você.
- Dá pra rodar vários sites/aplicações no mesmo servidor, cada um em seu "quartinho".
- Melhora performance servindo arquivos estáticos direto pelo Nginx.
Pré-requisitos
- Um servidor com acesso via terminal (SSH) e permissões de administrador.
- Nginx instalado no servidor.
- Node.js e sua aplicação já funcionando localmente (rodando em alguma porta, ex.: 3000).
- Seu domínio já apontando para o IP do servidor (consulte o suporte se tiver dúvidas sobre DNS).
Passo a passo
1. Deixe sua aplicação Node.js "sempre de pé"
Antes de mexer no Nginx, sua aplicação precisa continuar rodando mesmo depois que você fechar o terminal. Para isso, o mais comum é usar um gerenciador de processos, como o PM2:
npm install -g pm2 pm2 start app.js --name minha-aplicacao pm2 save pm2 startup
Isso garante que, se o servidor reiniciar, sua aplicação volta a funcionar sozinha.
2. Confirme em qual porta a aplicação está escutando
Normalmente é algo como http://127.0.0.1:3000 (ou seja, só o próprio servidor "enxerga" essa porta — e é assim que tem que ser, por segurança).
3. Crie o arquivo de configuração do site no Nginx
Abra ou crie o arquivo de configuração do seu domínio (o caminho pode variar conforme a distribuição Linux, geralmente em /etc/nginx/sites-available/):
server {
listen 80;
server_name seudominio.com.br www.seudominio.com.br;
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;
}
}
Troque seudominio.com.br pelo seu domínio real e 3000 pela porta que sua aplicação usa.
4. Ative o site e teste a configuração
- Crie um link simbólico para ativar o site (se sua instalação usar essa estrutura):
ln -s /etc/nginx/sites-available/seudominio.com.br /etc/nginx/sites-enabled/
- Teste se a configuração está sem erros de sintaxe:
nginx -t
- Se aparecer "syntax is ok" e "test is successful", recarregue o Nginx:
systemctl reload nginx
5. Ative o HTTPS (o cadeado 🔒)
Com tudo funcionando em HTTP, o passo final é ativar o certificado SSL para que o acesso seja seguro (https://). A ferramenta mais usada para isso em servidores próprios é o Certbot, que automatiza a emissão de certificados gratuitos:
certbot --nginx -d seudominio.com.br -d www.seudominio.com.br
Ele mesmo ajusta seu arquivo de configuração do Nginx para redirecionar tudo automaticamente para HTTPS.
Erros comuns (e como não cair neles)
- "502 Bad Gateway": geralmente significa que sua aplicação Node.js não está rodando ou está em outra porta. Confira com
pm2 status. - Site não atualiza depois de mudar o Nginx: você editou o arquivo mas esqueceu de rodar
nginx -tesystemctl reload nginx. - Aplicação "cai" quando fecho o terminal: sinal de que ela não está rodando com PM2 (ou outro gerenciador de processos) em segundo plano.
Dica da Sensei: sempre teste a configuração do Nginx com nginx -t antes de recarregar. É como revisar a receita antes de colocar no forno — evita servir um site fora do ar para os seus visitantes por um pequeno erro de digitação.
Ficou com dúvida?
Configuração de servidor pode ter variações dependendo do seu ambiente. Se algo não se encaixar exatamente como no seu caso, ou se você não tiver certeza sobre qual é o tipo de acesso do seu plano, fale com o nosso suporte — eles vão te orientar sobre o caminho certo para hospedar sua aplicação Node.js dentro do seu plano GeHost.