Como configurar um proxy reverso (Nginx) na frente de uma aplicação rodando em outra porta
Oi, tudo bem? Aqui é a Sensei da GeHost 🧑🏫 Hoje vamos falar de um tema mais "de bastidores": como colocar o Nginx na frente de uma aplicação que roda numa porta diferente da 80/443 — tipo aquele sistema em Node.js, Python, Java ou qualquer outra stack que sobe escutando em localhost:3000, :8080 etc. Vamos com calma, passo a passo, sem juridiquês técnico. 💛
O que é um "proxy reverso" (em bom português)
Pensa assim: sua aplicação roda escondida numa porta interna do servidor (ex.: 3000), e ninguém de fora consegue acessar ela diretamente por segurança e organização. O Nginx entra como um "recepcionista": ele fica ouvindo nas portas públicas (80 para HTTP e 443 para HTTPS) e, quando alguém acessa seudominio.com.br, o Nginx repassa a requisição pra sua aplicação por trás, e devolve a resposta pro visitante como se fosse ele mesmo quem respondeu. Isso é o "proxy reverso".
💡 Dica da Sensei: a grande vantagem é que você consegue colocar SSL (o cadeado 🔒), domínio bonito e cache na frente de uma aplicação que, sozinha, não sabe fazer nada disso — o Nginx cuida dessa parte pra ela.
Quando você precisa disso
- Sua aplicação (Node.js, Python/Django/Flask, Java, Go, etc.) sobe um servidor próprio numa porta "estranha" (3000, 5000, 8080...).
- Você quer que o público acesse por
https://seudominio.com.br, sem precisar digitar:3000no navegador. - Você quer HTTPS (certificado SSL) na frente da aplicação.
⚠️ Atenção antes de começar: essa configuração mexe direto em arquivos de servidor e normalmente exige acesso via terminal (SSH) a um ambiente com Nginx instalado (ex.: um VPS ou servidor próprio). Se o seu contrato é uma hospedagem de site padrão e você não tem certeza se o seu ambiente tem esse tipo de acesso, é mais seguro chamar o suporte da GeHost antes pra confirmar o que está disponível no seu plano — assim ninguém corre risco de mexer em algo sem necessidade.
Pré-requisitos
- Acesso ao terminal do servidor onde a aplicação está rodando.
- Nginx instalado no servidor.
- Sua aplicação já rodando e respondendo numa porta interna (ex.:
127.0.0.1:3000) — teste isso antes de configurar o proxy, pra saber se o problema é a aplicação ou o Nginx. - O domínio já apontado para o servidor (isso é configurado no DNS, e não faz parte deste guia).
Passo a passo
1. Confirme que a aplicação está rodando
No próprio servidor, rode um teste simples pra ver se a aplicação responde na porta interna dela, por exemplo:
curl http://127.0.0.1:3000
Se voltar algum conteúdo (HTML, JSON, etc.), ótimo — a aplicação está de pé. Se der erro de conexão, resolva isso primeiro: não adianta configurar o Nginx se a aplicação nem está no ar.
2. Crie um arquivo de configuração para o seu site
Nos servidores com Nginx, cada site costuma ter seu próprio arquivo de configuração (normalmente dentro de uma pasta de "sites disponíveis"). Crie um arquivo novo para o seu domínio com um conteúdo parecido com este:
server {
listen 80;
server_name seudominio.com.br www.seudominio.com.br;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
Repare no proxy_pass: é ali que você diz pro Nginx "quando chegar uma visita, joga ela pra essa porta interna". Troque seudominio.com.br e a porta pelos valores reais do seu projeto.
💡 Dica da Sensei: aqueles quatro proxy_set_header são importantes! Sem eles, sua aplicação pode "achar" que todo mundo está acessando a partir do próprio servidor, e não do visitante real — isso confunde logs, geolocalização e até algumas regras de segurança da aplicação.
3. Ative a configuração
Depois de criar o arquivo, ele geralmente precisa ser "ativado" (em muitos servidores isso é feito criando um link para a pasta de sites ativos, ou reunindo os arquivos numa pasta específica que o Nginx já lê — isso varia conforme como o Nginx foi instalado no seu ambiente).
4. Teste a configuração antes de aplicar
Sempre, sempre rode o teste de sintaxe antes de recarregar o Nginx:
nginx -t
Se aparecer algo como syntax is ok e test is successful, pode seguir. Se der erro, ele te diz exatamente a linha do problema — corrija antes de continuar.
5. Recarregue o Nginx
systemctl reload nginx
Isso aplica a nova configuração sem derrubar as conexões que já estavam acontecendo em outros sites do mesmo servidor.
6. Acesse pelo domínio e confira
Abra http://seudominio.com.br no navegador. Se aparecer a sua aplicação (a mesma coisa que você viu no teste do passo 1), deu tudo certo! 🎉
7. Ative o HTTPS (recomendado)
Com o proxy funcionando em HTTP, o passo seguinte natural é colocar o certificado SSL para habilitar o https://. Esse processo de emissão de certificado costuma ser feito por uma ferramenta própria do servidor (como o Certbot, no caso do Let's Encrypt) ou pelo painel de gerenciamento do seu ambiente. Se tiver dúvida em qual caminho usar no seu caso, é só chamar o suporte que a gente te orienta.
💡 Dica da Sensei: depois que o certificado for emitido, normalmente é criado um segundo bloco de configuração ouvindo na porta 443 (HTTPS) com o mesmo proxy_pass — e o bloco da porta 80 costuma ficar só redirecionando para o 443. Isso também varia conforme a ferramenta usada para emitir o certificado.
Erros comuns (e como resolver)
- "502 Bad Gateway": o Nginx está de pé, mas não conseguiu falar com a aplicação na porta interna. Confira se a aplicação realmente está rodando (volte ao passo 1).
- "Connection refused": geralmente é a porta errada no
proxy_pass, ou a aplicação caiu. - Nada muda depois de editar o arquivo: você provavelmente esqueceu de rodar o
nginx -t+reload, ou editou o arquivo errado. - Funciona por IP mas não pelo domínio: verifique se o
server_nameno arquivo está exatamente igual ao domínio, e se o DNS do domínio já está apontando corretamente.
Quando chamar o suporte da GeHost
Se você seguiu os passos e ainda assim não conseguiu fazer funcionar, ou se não tem certeza se o seu ambiente permite esse tipo de configuração, não force a barra — abra um chamado com a nossa equipe pelo painel.gehost.com.br. É sempre melhor perguntar antes de mexer em algo que pode tirar um site do ar. 🙂
💛 A Sensei está sempre por aqui torcendo pelo seu projeto — qualquer dúvida no meio do caminho, chama a gente!