Caddy 2.0: web server con HTTPS automatico

Caddy 2.0 (maggio 2020) di Matt Holt: web server scritto in Go con HTTPS automatico via Let's Encrypt, configurazione JSON/Caddyfile, reverse proxy, HTTP/3. Alternativa moderna a Nginx e Apache.

Open SourceWeb CaddyGoMatt HoltWeb ServerHTTPSOpen Source

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.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi