Servidor & DevOps 48 visualizações

Como configurar um proxy reverso (Nginx) na frente de uma aplicação rodando em outra porta

Ver no WHMCS

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 :3000 no 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

  1. Acesso ao terminal do servidor onde a aplicação está rodando.
  2. Nginx instalado no servidor.
  3. 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.
  4. 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_name no 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!
Precisa de Ajuda?

Nossa equipe está pronta para resolver suas dúvidas.