Como configurar um proxy reverso com Nginx Print

  • 0

Como Configurar um Proxy Reverso com Nginx

Bem-vindo, amigo! 👋

Se você chegou aqui, provavelmente ouviu falar em "proxy reverso com Nginx" e pensou: "mas que bicho é esse?". Relaxa! Vou descomplicar tudo pra você. A gente vai aprender, passo a passo, como colocar um Nginx na frente do seu site para melhorar a performance, segurança e distribuir o trâfego. Bora lá?

O que é um Proxy Reverso?

Imagina que o seu site é um atendente em um balcão. Um proxy reverso é como um recepcionista que fica ANTES do atendente. Quando alguém chega pedindo algo, o recepcionista (Nginx) decide pra qual atendente encaminhar, conversa com o cliente no lugar dele, e ainda pode deixar algumas respostas em cache (guardadas) pra responder mais rápido da próxima vez.

Por que usar?

  • ⚡ Mais velocidade (cache de respostas)
  • 🛡️ Mais segurança (seu servidor real fica escondido)
  • 📊 Distribuir carga entre vários servidores
  • 🔄 Atualizar servidores sem descer o site

Pré-requisitos

Você vai precisar de:

  • Acesso SSH ao servidor (ou painel de controle que permita editar configurações)
  • Um servidor rodando sua aplicação (Node.js, Python, PHP-FPM, etc.) em uma porta específica — vamos chamar de porta 3000 neste guia (seu caso pode ser diferente)
  • Permissão pra instalar/editar pacotes
  • Um domínio apontado pro servidor

Passo 1: Instalar o Nginx

Se você ainda não tem o Nginx instalado, vamos fazer:

  1. Abra o terminal/SSH do seu servidor
  2. Atualize a lista de pacotes:
    sudo apt update
  3. Instale o Nginx:
    sudo apt install nginx
  4. Inicie o serviço:
    sudo systemctl start nginx
  5. Deixe rodando sempre (auto-iniciar no boot):
    sudo systemctl enable nginx

Dica: Se o servidor já usa porta 80 (HTTP) ou 443 (HTTPS), o Nginx pode reclamar. Nesse caso, a gente resolve depois.

Passo 2: Entender a Estrutura de Configuração

O Nginx guarda suas configurações em um arquivo. Não se assuste — é bem simples. O arquivo principal está aqui:

/etc/nginx/nginx.conf

Mas o LEGAL é que a gente cria arquivos separados dentro de uma pasta chamada sites-available e depois "ativa" eles. É como ter várias receitas em fichas diferentes, em vez de uma receita gigante, né?

Passo 3: Criar a Configuração do Proxy Reverso

Vamos criar um arquivo novo pra sua configuração:

  1. Abra o editor de texto (nano é mais fácil pra iniciante):
    sudo nano /etc/nginx/sites-available/seu-dominio.conf
    (troque seu-dominio pelo nome do seu domínio, ex.: exemplo.com.conf)
  2. Cole o conteúdo abaixo (vou explicar cada parte depois):
    server {
      listen 80;
      server_name seu-dominio.com www.seu-dominio.com;

      # Aqui, o Nginx "fala" com seu servidor real
      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;
      }
    }
  3. Salve o arquivo (em nano: Ctrl + O, depois Enter, depois Ctrl + X)

Entendendo a Configuração

O que significa cada linha?

  • listen 80; — Nginx escuta na porta 80 (HTTP padrão)
  • server_name seu-dominio.com; — O domínio que vai redirecionar pra cá
  • proxy_pass http://127.0.0.1:3000;A MÁGICA! Aqui é onde você diz: "ei Nginx, redireciona TUDO pro meu servidor na porta 3000"
  • proxy_http_version 1.1; — Usa a versão 1.1 do HTTP (mais moderna)
  • proxy_set_header... — Passa informações pro seu servidor real saber quem é o cliente de verdade (senão seu app acha que TUDO vem do Nginx)

E se meu servidor real está em outra máquina? Troque 127.0.0.1 pelo IP do outro servidor. Exemplo: proxy_pass http://192.168.1.100:3000;

Passo 4: Ativar a Configuração

Legal, criamos o arquivo. Agora a gente "ativa":

  1. Crie um link simbólico pra pasta sites-enabled (é como "ligar um botão"):
    sudo ln -s /etc/nginx/sites-available/seu-dominio.conf /etc/nginx/sites-enabled/seu-dominio.conf
  2. Teste se a configuração tá certa (evita quebrar o Nginx):
    sudo nginx -t

    Se der "test is successful", tá perfeito! Se der erro, volta no arquivo e confere a sintaxe.

  3. Recarregue o Nginx (sem desligar):
    sudo systemctl reload nginx

Passo 5: Testar Tudo

Agora vem a hora da verdade:

  1. Abra o navegador
  2. Acesse seu-dominio.com
  3. Se vir seu site funcionando, PARABÉNS! 🎉 O proxy reverso está funcionando!
  4. Se não funcionar, verifica:
    • O DNS do domínio está apontando pro servidor?
    • Seu servidor real (porta 3000) está rodando?
    • A porta 3000 é realmente a correta?

Bônus: Adicionar HTTPS (SSL/TLS) com Let's Encrypt

Quer fazer seu site ainda mais seguro (aquele cadeadinho verde)? Vamos adicionar certificado grátis:

  1. Instale o Certbot (ferramenta que gera certificado automático):
    sudo apt install certbot python3-certbot-nginx
  2. Execute:
    sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
  3. Responda as perguntas (e-mail pra avisos, aceitar termos, etc.)
  4. Pronto! O Certbot vai mexer na sua configuração automaticamente e adicionar HTTPS.

Aviso: O certificado expira em 90 dias, mas o Certbot renova automático. Nada pra você fazer!

Dicas Extras pra Ficar Fera

💡 Cache — Quer deixar as respostas em cache? Adiciona isso dentro do bloco location: proxy_cache_valid 200 10m; (guarda respostas 200 por 10 minutos)
⏱️ Timeout — Se seu servidor é lento, Nginx pode achar que desligou. Aumenta o timeout assim: proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s;
📊 Balancear Carga — Tem 2+ servidores? Distribui a carga: upstream backend {
  server 192.168.1.100:3000;
  server 192.168.1.101:3000;
}

Depois usa proxy_pass http://backend; em vez de um IP só.

Troubleshooting: O que Fazer se Não Funcionar

🔍 502 Bad Gateway (Nginx não consegue falar com o servidor real)

  • Verifica se o servidor real tá rodando: sudo systemctl status seu-servico
  • Verifica a porta correta: sudo netstat -tuln | grep 3000

🔍 Connection refused

  • Firewall tá bloqueando? Abre a porta: sudo ufw allow 3000
  • Ou o IP no proxy_pass tá errado?

🔍 Timeout (site demora muito ou cai)

  • Aumenta os timeouts (vê dica acima)
  • Seu servidor real tá lento? Precisa otimizar lá, Nginx é só o porteiro

Resumão Final

Você aprendeu a:

  1. ✅ Instalar Nginx
  2. ✅ Criar uma configuração de proxy reverso
  3. ✅ Ativar e testar
  4. ✅ Adicionar HTTPS
  5. ✅ Resolver problemas comuns

Seu site agora tem um recepcionista super eficiente na porta, entregando as requisições do jeito certo, protegendo seu servidor real e deixando tudo mais rápido. Você é fera! 🚀

Precisa de Help?

Se bater alguma dúvida ou der problema, a gente tá aqui! Abre um ticket de suporte ou manda uma mensagem — a Sensei da GeHost resolve pra você! 😊


Was this answer helpful?

« Back