Wie verglichen wurde
Alle Angaben stammen aus der Dokumentation der beiden Projekte (caddyserver.com und nginx.org), ihren Lizenzdateien und Release-Seiten, abgerufen am 13.10.2026. Verglichen wird der freie Zweig von nginx; was nur im kommerziellen Angebot von F5 steckt, ist so gekennzeichnet. Gemessen wurde nichts: Zu Tempo und Speicherbedarf stehen hier keine Zahlen, weil sich fremde Benchmarks nicht prüfen lassen und eigene Messungen fehlen. Die Einschätzungen am Ende leiten sich aus den belegten Unterschieden ab.
Traefik, nach dem ebenfalls gesucht wird, fehlt bewusst; er wäre ein eigener Vergleich.
Die Unterschiede im Einzelnen
HTTPS ohne Zusatzwerkzeug
Der bekannteste Unterschied: Caddy liefert jede Seite standardmäßig über HTTPS aus. Für öffentliche Domains holt es Zertifikate bei einer ACME-Zertifizierungsstelle wie Let’s Encrypt oder ZeroSSL, erneuert sie selbst und leitet HTTP auf HTTPS um. Für localhost und interne Namen erzeugt es selbstsignierte Zertifikate, die es lokal als vertrauenswürdig einträgt, wenn es darf.
nginx kann Zertifikate inzwischen ebenfalls selbst beziehen, über das Modul ngx_http_acme_module. Es ist aber ein eigenes Modul, das du als Paket installierst; darin legst du einmal einen Aussteller mit Kontakt und Ablageort an und verweist in jedem Server-Block mit acme_certificate darauf. Ohne das Modul übernimmt ein Werkzeug außerhalb von nginx die Zertifikate.
HTTP/3
Caddy spricht HTTP/1.1, HTTP/2 und HTTP/3 ab Werk; abschalten lässt sich das in den globalen Optionen. Bei nginx steckt HTTP/3 seit Version 1.25.0 im Modul ngx_http_v3_module, das die Dokumentation als experimentell bezeichnet. Es ist in den Linux-Paketen von nginx.org enthalten, beim Selbstbauen musst du es mit --with-http_v3_module einschalten und in der Konfiguration einrichten.
Konfiguration und Änderungen im Betrieb
Caddy kennt zwei Formate. Das Caddyfile ist für die Pflege von Hand gedacht und wird intern in JSON übersetzt; JSON ist das eigentliche Format und kann mehr. Eine Admin-API, standardmäßig unter localhost:2019, nimmt neue Konfigurationen entgegen. Laut Dokumentation geht das ohne Ausfall, und scheitert die neue Konfiguration, bleibt die alte in Kraft.
nginx liest seine nginx.conf mit eigener Syntax. Nach einer Änderung schickst du ein Signal (nginx -s reload): Der Hauptprozess prüft die neue Konfiguration, startet bei Erfolg neue Arbeitsprozesse, und die alten bedienen ihre offenen Verbindungen zu Ende. Scheitert die Prüfung, läuft die alte Konfiguration weiter. Seit Mainline 1.31.5 gibt es zusätzlich eine Control API, die beim Bauen mit --with-control-api und beim Start mit -l eingeschaltet wird; sie zeigt die laufende Konfiguration und löst ein Neuladen aus. In der Stable-Linie 1.30 fehlt sie. Die umfangreichere REST-API ngx_http_api_module gehört weiter zum kommerziellen Angebot.
Reverse Proxy und Lastverteilung
Beide arbeiten als Reverse Proxy und verteilen Anfragen auf mehrere Ziele. Caddy richtet einen einfachen Proxy auch ganz ohne Konfigurationsdatei ein, mit caddy reverse-proxy --from … --to …. Es prüft Ziele aktiv und passiv auf Erreichbarkeit. nginx bietet Round Robin, Least Connections und IP-Hash; im freien Zweig sind die Health Checks passiv, also an echten Anfragen orientiert. Aktive Prüfungen bietet das Modul ngx_http_upstream_hc_module, das nur Teil des kommerziellen Abonnements ist.
Erweiterungen
Caddy-Plugins werden in das Programm einkompiliert, mit dem Werkzeug xcaddy oder über die Downloadseite; die offiziellen Pakete enthalten nur die Standardmodule. nginx kann Module zusätzlich als dynamische Module einbinden, die beim Einlesen der Konfiguration über load_module geladen werden, und nginx.org bietet Pakete mit solchen Modulen an.
Lizenz, Sprache und Betrieb
Caddy ist in Go geschrieben und steht unter der Apache-Lizenz 2.0. nginx ist in C geschrieben und steht unter der BSD-Lizenz mit zwei Klauseln. Beide sind kostenlos. Für nginx bietet F5 kommerzielle Distributionen, Support und Schulungen an; das Caddy-Projekt bietet Unternehmen Support über die meisten Sponsoring-Stufen an. Unter Windows läuft Caddy als normale Binärdatei, die Windows-Version von nginx gilt laut Dokumentation als Beta.
Für wen was passt
Die folgenden Punkte sind Einschätzungen, abgeleitet aus den Angaben oben.
- Caddy passt, wenn du eine neue Seite, eine App oder einen Heimserver mit wenigen Diensten absichern willst. HTTPS, Weiterleitung und HTTP/3 laufen ohne Zusatzwerkzeug, und das Caddyfile bleibt kurz. Auch wer Konfigurationen per Skript oder aus einer Plattform heraus ändert, profitiert von der API.
- nginx passt, wenn es schon läuft, wenn dein Team die Konfiguration kennt oder wenn du kommerziellen Support und die Funktionen des kommerziellen Zweigs brauchst. Seit es das ACME-Modul gibt, ist die Zertifikatsverwaltung auch ohne Zusatzwerkzeug möglich, nur eben nicht automatisch an.
- Wechseln lohnt sich vor allem dann, wenn die Pflege von Zertifikaten und Weiterleitungen dich heute Zeit kostet. Für Tempo als Grund fehlen belastbare Zahlen.