~ / blog / rede
22 set 2026rede8 min de leitura

Caddy: reverse proxy moderno com TLS automático

Substitua ou complemente o Nginx com Caddy: HTTPS automático, config simples e proxy para apps e containers.

CaddyReverse ProxyTLSHTTPS

1. Por que Caddy

Caddy obtém e renova certificados Let's Encrypt automaticamente. A configuração (Caddyfile) é legível e curta. Ideal para homelab, MVPs e serviços internos que precisam de HTTPS sem gerenciar certbot.

2. Instalação

# Ubuntu (pacote oficial)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# siga a doc oficial para o repositório
sudo apt update && sudo apt install caddy

# ou Docker
docker run -d --name caddy \
  -p 80:80 -p 443:443 \
  -v $PWD/Caddyfile:/etc/caddy/Caddyfile \
  -v caddy_data:/data \
  caddy:2

3. Caddyfile básico

# /etc/caddy/Caddyfile
exemplo.com {
    root * /var/www/html
    file_server
}

app.exemplo.com {
    reverse_proxy localhost:3000
}
sudo systemctl reload caddy
# ou: caddy reload --config /etc/caddy/Caddyfile
DICA · O domínio precisa apontar (A/AAAA) para o servidor e as portas 80/443 precisam estar abertas.

4. Proxy para app e Docker

api.exemplo.com {
    reverse_proxy 127.0.0.1:8080
}

# múltiplos backends (load balance simples)
app.exemplo.com {
    reverse_proxy app1:3000 app2:3000
}

# path específico
exemplo.com {
    handle /api/* {
        reverse_proxy localhost:8080
    }
    handle {
        root * /var/www
        file_server
    }
}

5. Headers e compressão

exemplo.com {
    encode gzip zstd
    header {
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        X-Content-Type-Options nosniff
        X-Frame-Options DENY
        -Server
    }
    reverse_proxy localhost:3000
}

6. Checklist

  • DNS apontando corretamente
  • Portas 80 e 443 liberadas
  • Volume de dados do Caddy persistente (certificados)
  • Reload após mudanças no Caddyfile
  • Teste de HTTPS e redirecionamento HTTP→HTTPS

7. Erros comuns

SintomaCausaSolução
Certificado não emiteDNS ou porta 80 bloqueadaConfirme A record e firewall
502 Bad GatewayBackend offline ou endereço erradoTeste o upstream localmente
Config não aplicaReload não feitocaddy reload ou systemctl
Conflito de portaNginx ou outro serviço na 80/443Pare o outro serviço ou mude portas

Quer aplicar isso ao seu contexto?

Se esse problema existe na sua operação, podemos analisar o cenário em um diagnóstico gratuito de 30 minutos.

solicitar diagnóstico gratuito →

Leia também