HTTPS automatico come default
La configurazione TLS è storicamente dolorosa: ottenere certificato, configurare SSL directive, rinnovarli, riavviare server. Nginx/Apache richiedono automazione esterna (certbot). Caddy fa qualcosa di differente: HTTPS automatico per default, trasparente, con rinnovo.
Il rilascio
Caddy 1.0 è pubblicato nel 2015 da Matt Holt. Caddy 2.0 è il rewrite completo rilasciato il 4 maggio 2020. Scritto in Go, licenza Apache 2.0. Single binary ~25 MB, zero dependency.
example.com {
reverse_proxy localhost:3000
}
api.example.com {
reverse_proxy localhost:8080
encode gzip
}
Queste 5 linee fanno: ottiene certificato Let’s Encrypt per example.com e api.example.com, configura HTTPS con HTTP/2 e HTTP/3, reverse proxy, gzip. Rinnovo automatico.
Caratteristiche
- HTTPS automatico — ACME client integrato (Let’s Encrypt, ZeroSSL)
- HTTP/3 (QUIC) supportato nativamente
- Reverse proxy fluente
- Load balancing — round-robin, random, least-conn, IP hash
- Config dinamica — API JSON per riconfigurazione senza reload
- On-demand TLS — certificato al primo hit per SaaS multi-tenant
- Modules — plugin system (auth, metrics, logging, hooks)
- Structured logging (JSON, slog)
- Metriche Prometheus
- FastCGI (PHP-FPM, Python uWSGI)
Formati configurazione
- Caddyfile — DSL human-friendly (vedi sopra)
- JSON — API native, più espressivo
- Adapters — può importare da nginx config, Consul, etc.
Versioni
- 2.0 (maggio 2020) — rewrite
- 2.4 (marzo 2021) — HTTP/3 stable
- 2.5 (aprile 2022) — SNI improvements
- 2.6 (settembre 2022) — Go 1.18
- 2.7 (giugno 2023) — migliorati logging
- 2.8 (2024) — Caddy metrics Prometheus built-in
Concorrenti
- Nginx — standard industriale, più veloce sotto carico estremo, configurazione verbosa, HTTPS manuale
- Apache HTTPD — veterano, mod_ssl complesso
- Traefik — simile filosofia auto-HTTPS, orientato container/k8s
- HAProxy — load balancer puro, TCP/HTTP
- OpenResty — nginx + Lua
Casi d’uso
- Edge proxy per app containerizzate
- Personal server / homelab
- Dev environments con HTTPS reale
- SaaS multi-tenant con on-demand TLS
- Sostituto di Nginx per team che valorizzano DX
Nel contesto italiano
Caddy è usato in:
- Agenzie web italiane per hosting semplice SSL
- Homelab e self-hosting appassionati
- Startup che vogliono evitare configurazioni nginx
- Edge gateway davanti a Node/Python/Go app
- Hosting multi-tenant (SaaS italiani B2B)
Spesso scelto come reverse proxy davanti a Node.js o Python app al posto di Nginx.
Riferimenti: Caddy 2.0 (4 maggio 2020). Matt Holt. Licenza Apache 2.0. Scritto in Go. HTTPS automatico via ACME (Let’s Encrypt, ZeroSSL). HTTP/3 nativo. Caddyfile DSL, JSON API.
