Proxy reverso com Nginx: o guia da Sensei pra quem quer colocar uma aplicação atrás do Nginx
Oi! Eu sou a Sensei da GeHost, e hoje vamos falar de um assunto que costuma assustar quem está começando: proxy reverso. Calma, não é nenhum bicho de sete cabeças — é só o Nginx "atendendo a porta" na frente da sua aplicação e repassando as requisições pra ela. Vamos passo a passo, com calma, do jeitinho que eu explicaria pra um amigo. 💙
Antes de começar: este é um procedimento de SSH & Avançado — ou seja, ele exige acesso de terminal (SSH) e, geralmente, permissões administrativas (root/sudo) no servidor onde o Nginx está instalado. Nem todo tipo de hospedagem inclui esse tipo de acesso. Se você não tem certeza se o seu plano permite isso, o caminho mais seguro é consultar o painel.gehost.com.br ou falar com o suporte antes de seguir.
O que é um proxy reverso, afinal?
Imagina o Nginx como um recepcionista muito organizado. Quando alguém acessa o seu domínio, é o Nginx quem atende primeiro — e, em vez de responder ele mesmo, ele encaminha o pedido pra "sala dos fundos", onde a sua aplicação (um site Node.js, uma API, um sistema em outra porta, etc.) está realmente rodando. Depois, ele pega a resposta da aplicação e entrega pro visitante como se tivesse sido ele mesmo o tempo todo.
Isso é super útil quando você tem uma aplicação rodando numa porta "estranha" (tipo 3000 ou 8080) e quer que ela responda normalmente pelo seu domínio, na porta 80/443, com um endereço bonito e, futuramente, com HTTPS.
O que você vai precisar
- Acesso SSH ao servidor onde o Nginx está instalado (com permissão para editar arquivos de configuração).
- O Nginx já instalado e funcionando.
- Sua aplicação já rodando em alguma porta local (por exemplo,
127.0.0.1:3000). - Um pouco de paciência — configuração de servidor é sempre um passo de cada vez. 😉
Passo a passo
1. Conecte-se via SSH
Abra seu terminal e conecte no servidor:
ssh usuario@seu-servidor
Se você não sabe o comando exato de conexão do seu ambiente, confira as informações de acesso no seu painel ou peça pro suporte confirmar.
2. Confirme que o Nginx está instalado e rodando
sudo systemctl status nginx
Se aparecer algo como active (running), tudo certo. Se não estiver instalado, é preciso instalar antes de continuar — nesse caso, procure o suporte pra te orientar sobre o ambiente específico do seu servidor.
3. Crie (ou edite) o arquivo de configuração do site
A maioria das instalações Nginx organiza os sites em /etc/nginx/sites-available/. Crie um arquivo novo para o seu domínio:
sudo nano /etc/nginx/sites-available/meusite.com
4. Monte o bloco de proxy reverso
Dentro do arquivo, adicione algo parecido com isto (troque meusite.com e a porta pelo endereço real da sua aplicação):
server {
listen 80;
server_name meusite.com www.meusite.com;
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;
}
}
Vamos entender rapidinho cada linha importante:
- proxy_pass: pra onde o Nginx vai encaminhar o pedido (o endereço/porta real da sua aplicação).
- proxy_set_header Host: preserva o domínio original na requisição.
- X-Real-IP e X-Forwarded-For: garantem que a sua aplicação saiba o IP real de quem está visitando, e não o IP interno do Nginx.
- X-Forwarded-Proto: informa se a conexão original era HTTP ou HTTPS — importante quando você ativar SSL depois.
5. Ative o site
Em instalações baseadas em Debian/Ubuntu, crie um link simbólico para a pasta de sites ativos:
sudo ln -s /etc/nginx/sites-available/meusite.com /etc/nginx/sites-enabled/
6. Teste a configuração antes de aplicar
Esse passo é essencial — nunca pule ele:
sudo nginx -t
Se aparecer syntax is ok e test is successful, pode seguir em frente. Se der erro, releia com calma o arquivo — geralmente é ponto e vírgula esquecido ou chave sem fechar.
7. Recarregue o Nginx
sudo systemctl reload nginx
Pronto! Agora, ao acessar meusite.com, o Nginx vai repassar tudo pra sua aplicação nos bastidores.
8. E o HTTPS?
Depois que o proxy estiver funcionando em HTTP, o próximo passo natural é ativar o certificado SSL para o domínio, deixando o acesso seguro (com o cadeado). Como a forma de emissão do certificado varia conforme o ambiente, o ideal aqui é consultar o suporte ou a documentação específica do seu servidor pra fazer esse passo com segurança.
Dica da Sensei: sempre que for mexer numa configuração de produção, faça uma cópia do arquivo original antes de editar (
cp arquivo arquivo.bak). Assim, se algo sair do esperado, você volta atrás em segundos.
Dica da Sensei: se sua aplicação usa WebSocket (chat em tempo real, notificações etc.), você provavelmente vai precisar adicionar também
proxy_http_version 1.1;,proxy_set_header Upgrade $http_upgrade;eproxy_set_header Connection "upgrade";dentro do blocolocation.
Erros comuns (e como respirar fundo e resolver)
- 502 Bad Gateway: geralmente significa que a aplicação não está rodando na porta configurada, ou travou. Confirme se ela está de pé.
- Configuração não aplica: confira se você recarregou o Nginx depois da alteração (
systemctl reload nginx) e se o link emsites-enabledfoi criado corretamente. - Domínio não resolve: antes de tudo, confirme que o domínio já está apontando corretamente pro servidor — isso é configurado fora do Nginx.
Precisa de ajuda?
Se em algum momento a coisa ficar complicada ou você não tiver certeza sobre o acesso/permissões do seu ambiente, não force a barra sozinho — fale com o suporte da GeHost ou confira as informações do seu plano no painel.gehost.com.br. Estamos aqui pra ajudar você a chegar lá com segurança. 🌱