Tutoriais

Configurando proxy reverso com Nginx ou Traefik

Configurando proxy reverso com Nginx ou Traefik

Um proxy reverso recebe as requisições dos visitantes e as encaminha para a aplicação correta no servidor. Com ele, você roda várias aplicações — cada uma em sua porta interna — atrás das portas 80 e 443, com SSL centralizado.

Por que usar

  • Vários domínios/aplicações no mesmo VPS;
  • SSL em um só lugar;
  • Aplicações escutando apenas no localhost, invisíveis para a internet;
  • Cache, compressão, rate limiting e cabeçalhos de segurança centralizados;
  • Base para balanceamento de carga.

Opção 1: Nginx

Ótimo para aplicações instaladas diretamente no sistema ou em containers com portas fixas.

Exemplo: duas aplicações

# /etc/nginx/sites-available/apps
server {
    listen 80;
    server_name app1.seudominio.com.br;

    location / {
        proxy_pass http://127.0.0.1:3000;
        include /etc/nginx/snippets/proxy.conf;
    }
}

server {
    listen 80;
    server_name app2.seudominio.com.br;

    location / {
        proxy_pass http://127.0.0.1:8080;
        include /etc/nginx/snippets/proxy.conf;
    }
}

Snippet reutilizável

# /etc/nginx/snippets/proxy.conf
proxy_http_version 1.1;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

O cabeçalho Connection "upgrade" fixo funciona bem para WebSockets. Para produção com muito tráfego, prefira usar um map $http_upgrade $connection_upgrade e reaproveitar conexões.

sudo ln -s /etc/nginx/sites-available/apps /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app1.seudominio.com.br -d app2.seudominio.com.br

Opção 2: Traefik

Feito para containers: descobre serviços automaticamente pelos labels do Docker e emite certificados Let's Encrypt sozinho.

compose.yaml do Traefik

services:
  traefik:
    image: traefik:v3.1
    restart: unless-stopped
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --certificatesresolvers.le.acme.email=seu@email.com
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
      - --certificatesresolvers.le.acme.httpchallenge.entrypoint=web
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt
    networks:
      - proxy

networks:
  proxy:
    name: proxy

Use a versão estável mais recente do Traefik indicada na documentação oficial.

Publicando uma aplicação

services:
  app:
    image: minha-app:latest
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.http.routers.app.rule=Host(`app.seudominio.com.br`)
      - traefik.http.routers.app.entrypoints=websecure
      - traefik.http.routers.app.tls.certresolver=le
      - traefik.http.services.app.loadbalancer.server.port=3000
    networks:
      - proxy

networks:
  proxy:
    external: true

Suba o container e, em instantes, a aplicação estará em HTTPS — sem publicar portas no host.

Montar o docker.sock dá ao Traefik amplo acesso ao Docker. Use montagem somente leitura e, em ambientes sensíveis, considere um socket proxy.

Nginx ou Traefik?

Critério Nginx Traefik
Aplicações fora de containers Excelente Possível (arquivo de configuração)
Containers Docker Bom (configuração manual) Excelente (automático)
SSL automático Via Certbot Integrado
Arquivos estáticos e cache Excelente Limitado
Configuração Arquivos de texto Labels/YAML

Uma alternativa simples é o Caddy, que também tem SSL automático e configuração enxuta.

Conclusão

Com um proxy reverso, um único VPS vira uma plataforma para várias aplicações, todas com HTTPS. Monte a sua em um VPS-NVME-BR da VittHost, com NVMe e servidores no Brasil.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS