Traefik e Caddy são os reverse proxies modernos que fazem o Nginx parecer um dinossauro. Configuração declarativa, SSL automático, e middlewares que se ligam como Lego. Se ainda usas Nginx escrito à mão, este artigo vai fazer-te repensar.
Passei anos a escrever configs de Nginx à mão. VirtualHosts, SSL, redirecionamentos, rate limiting: tudo manual. Funcionava, mas cada novo serviço era um copy-paste de dezenas de linhas. E quando o certificado expirava porque o renewal hook não estava bem configurado, lá ia eu outra vez.
Foi quando descobri o Traefik e o Caddy. Duas ferramentas que pegam no que o Nginx faz bem e tornam-no automático. Descobrem serviços sozinhos (service discovery), obtêm certificados Let's Encrypt sem configuração extra, e expõem métricas e dashboards sem precisares de plugins externos.
Vou mostrar-te:
- Arquitetura do Traefik: entrypoints, routers, services, middlewares
- Docker provider e dashboard
- Middleware: rate limiting, auth, headers
- Caddyfile syntax: php_fastcgi, reverse_proxy, file_server
- Comparação prática: Traefik vs Caddy vs Nginx
- Exemplo real: deploy de 3 serviços com Traefik + Docker Compose
⬆ Traefik: entrypoints recebem tráfego, routers encaminham, services respondem
Traefik: o roteador que descobre serviços
O Traefik tem 4 conceitos fundamentais:
| Conceito | O que é | Exemplo |
|---|---|---|
| Entrypoints | Portas onde o Traefik ouve (ex: 80, 443, 8080) | --entrypoints.web.address=:80 |
| Routers | Regras que ligam entrypoints a services (host, path, headers) | Host("app.exemplo.pt") |
| Services | Destinos do tráfego (contentores, IPs, load balancers) | loadbalancer.server.port=3000 |
| Middlewares | Funções que processam o pedido antes de chegar ao serviço | RateLimit, Auth, Headers, Redirect |
O que torna o Traefik especial é o Docker provider: ele descobre automaticamente contentores com as labels certas e configura rotas sem precisares de reiniciar.
Exemplo de deploy com Traefik + Docker Compose
Dica: As labels do Traefik permitem configurar middlewares diretamente no Compose. Rate limiting, autenticação básica, redirecionamentos e headers personalizados: tudo sem ficheiros de configuração externos.
Caddy: a simplicidade levada ao extremo
O Caddy leva a filosofia "defaults seguros" ao limite. Com uma configuração mínima, tens HTTPS automático, HTTP/2/3, e um servidor de ficheiros pronto a usar.
Exemplos de Caddyfile
Nota: O Caddy obtém certificados Let's Encrypt automaticamente para todos os domínios que encontra no Caddyfile. Não precisas de instalar Certbot nem de configurar renewal. Tudo é automático por omissão.
Comparação: Traefik vs Caddy vs Nginx
| Critério | Traefik | Caddy | Nginx |
|---|---|---|---|
| SSL Automático | Let's Encrypt integrado | Automático (zero config) | Manual ou com Certbot |
| Service Discovery | Docker, Kubernetes, Consul | Manual (Caddyfile) | Manual |
| Dashboard/Monitorização | Dashboard web + métricas | API de admin básica | Separado (nginx-status) |
| Performance | Boa | Muito boa | Excelente |
| Facilidade de config | Média (labels/dinâmico) | Muito fácil | Difícil (verboso) |
| Middlewares | Muitos (rate limit, auth, retry) | Bons (headers, gzip, templates) | Básicos (proxy_pass, limit_req) |
| HTTP/3 | Sim | Sim (nativo) | Experimental |
| Recursos (RAM) | ~30-50 MB | ~15-25 MB | ~5-15 MB |
| Quando usar | Microserviços, Docker, Kubernetes | Projetos pequenos/médios, simplicidade | Alta performance, configuração granular |
⬆ Comparação visual das 3 ferramentas em critérios chave
Quando usar cada um?
A minha regra prática:
- Traefik: se tens um ecossistema de microserviços em Docker, com vários domínios e middlewares. A descoberta automática de contentores poupa imenso tempo. Ideal para um homelab ou cluster de staging.
- Caddy: se queres algo que "simplesmente funciona". Para um site pessoal, uma API simples, ou um serviço com PHP, o Caddy é imbatível em simplicidade. O HTTPS automático é mágico.
- Nginx: se precisas de performance extrema, configurações muito específicas, ou já tens um ecossistema Nginx estabelecido. O Nginx continua a ser o mais rápido e o mais flexível para cenários complexos.
Recapitulando
- Traefik: entrypoints + routers + services + middlewares. traefik.enable=true
- Traefik: Docker provider descobre contentores automaticamente
- Caddy: Caddyfile com syntax minimalista. HTTPS automático sem configuração
- Caddy: reverse_proxy, file_server, php_fastcgi
- Trafik vs Caddy vs Nginx: escolhe pelo ecossistema (Docker → Traefik, simplicidade → Caddy, performance → Nginx)
- Exemplo prático: 3 serviços com Traefik + Docker Compose
O mundo dos reverse proxies modernos é fantástico. Tanto o Traefik como o Caddy resolvem problemas reais que o Nginx deixa para o administrador resolver. Escolhe o que faz sentido para o teu ecossistema e nunca mais vais escrever uma config de Nginx à mão.
Experimenta este fim de semana: pega num dos teus serviços atrás de Nginx e mete-o atrás de Caddy ou Traefik. O tempo que poupas em configuração e manutenção vai surpreender-te.
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário