Zum Inhalt springen
  • Unternehmen

    Über Uns

    Wir analysieren, planen und optimieren deine Systemlandschaft für nachhaltige Performance.

    Referenzen

    Unsere Projekte sprechen für sich: maßgeschneiderte IT-Konzepte mit nachhaltigem Mehrwert.

    Karriere bei Toowoxx

    Werde Teil unseres Teams und forme die IT-Zukunft mit innovativen Projekten und Lösungen.

    Blog

    Bleiben Sie informiert: Aktuelle IT-Trends, Insights und Fachwissen aus erster Hand.
  • Leistungen

    IT-Support Outsourcing

    Entlasten Sie Ihre IT-Abteilung und profitieren Sie von verlässlichem, erfahrenem und kosteneffizientem Support.

    Netzwerk Management

    Wir unterstützen Sie bei der Implementierung und Pflege eines sicheren und zuverlässigen Netzwerks.

    Beratung: Software Architektur

    Wir begleiten Sie bei Konzeption und Strukturierung effizienter und zukunftsfähiger Softwaresysteme.

    Individual Entwicklung​

    Wir entwickeln passgenaue Softwarelösungen, die exakt auf Ihre Geschäftsprozesse abgestimmt sind.

    App Entwicklung

    Wir realisieren maßgeschneiderte Apps und sorgen für reibungslose Nutzung auf allen Endgeräten.

    Softwareprodukte

    Investieren Sie in die Lösungen von Toowoxx und entlasten Sie Ihre Verwaltung.

    HS-Hamburger Software​

    Informieren Sie sich über unsere Leistungen rund um die modulare Unternehmenssoftware unseres Geschäftspartners.

  • Managed Service

    IT-Services

    Qualifizierter Support und schnelle Abhilfe. Vorrausschauend geplant für einen reibungslosen Geschäftsablauf.

    Monitoring

    Mit Hilfe von Fernwartung lösen wir Ihre Probleme, bevor Sie Ihr Unternehmen und Ihre IT schädigen können.

    IT-Sicherheit

    Erstellen Sie mit uns ein passendes Sicherheitskonzept und vermeiden Sie böse Überraschungen.

    Datensicherung

    Daten sind das neue Gold des 21 Jahrhunderts! Wir helfen Ihnen Ihre Daten sicher aufzubewahren.

    Microsoft 365

    Nutzt Ihr Unternehmen die Programme von Microsoft bereits voll aus? Wir helfen mit Schulung, Support und Einrichtung.

    Sonstige Services

    Gehen Sie mit uns den nächsten Schritt der digitalen Transformation. Und machen Sie Ihr Unternehmen stark für die Zukunft.
  • Blog
  • Karriere
Kontakt
Unternehmen
  • Über Uns
  • Referenzen
  • Blog
Leistungen

IT Infrastruktur

  • Netzwerk Management
  • IT-Support Outsourcing

Software Entwicklung

  • Beratung: Software Management
  • Individual Entwicklung
  • App Entwicklung

ERP Lösungen

  • Software Lösungen
  • Hamburger Software
Managed Service
  • IT-Services
  • Monitoring
  • IT-Sicherheit
  • Datensicherung
  • Microsoft 365
  • Sonstige Services
  • Blog
  • Karriere
Kontakt
Gratis Erstberatung

Caddy Webserver

  • Dezember 13, 2021

Caddy ist ein erweiterbarer, Cross-Platform, Open-Source Webserver, der in Go geschrieben ist.

Die verwendete Lizenz ist Apache 2.0 und daher nicht so streng wie GPL. Ein wesentliches Merkmal von Caddy ist, dass der Webserver mit modernen und sicheren Standardeinstellungen ausgestattet ist, die vor allem durch die Go-Standardbibliothek beeinflusst werden. So ist bei Caddy HTTPS standardmäßig aktiv, wenn eine Domain als Host angegeben ist. Der Webserver besorgt sich somit automatisch ein Let’s Encrypt Zertifikat welches automatisch verlängert wird und richtet HTTPS inklusive HTTP zu HTTPS-Weiterleitung ein.


Da Caddy cross-platform ist, lässt sich der Webserver auf jedem Betriebssystem und jeder Prozessor-Architektur nutzen, sofern diese von Go selber unterstützt werden. Caddy wird manchmal auch Caddy 2 oder Caddy v2 genannt, da die zweite Version viele Neuerungen brachte und von Grund auf neu geschrieben wurde, wodurch auch Inkompatibilitäten zu v1 und v0 entstanden sind.


Caddy lässt sich sogar ohne Konfiguration in die Produktion bringen. Ein Beispielbefehl:

caddy file-server -domain beispiel.toowoxx.de -root /var/www/html

Dieser Befehl startet Caddy mit einem Dateiserver über HTTPS mit automatischer HTTP-Weiterleitung und Let’s Encrypt-Zertifikat für die Domain beispiel.toowoxx.de (DNS-Konfiguration muss vorab bereits geschehen sein). Dieser Dateiserver stellt das Verzeichnis /var/www/html, worin sich eine Webseite befinden könnte, somit zur Verfügung.


Caddy wird meist als Alternative zu Apache oder nginx verwendet, da die Konfiguration sehr einfach ist und sich viele Dinge schnell und unkompliziert lösen lassen.

Caddyfile

Caddy wird oft mittels eines Caddyfile konfiguriert. Das Caddyfile ist eine sehr simple und strukturierte Konfigurationssprache, die der Syntax von nginx-Konfiguration ähnelt. Die Dokumentation zum Caddyfile mit zahlreichen Beispielen ist unter https://caddyserver.com/docs/caddyfile verfügbar.


Folgendes Beispiel bildet das oben genannte Beispiel ab:

beispiel.toowoxx.de
root * /var/www/html
file_server

Caddy unterstützt auch mehrere virtuelle Hosts, eine Konfiguration kann also auch wie folgt aussehen:

beispiel.toowoxx.de {
    # File-Server aus /var/www/html (ähnlich zu DocumentRoot in Apache 2)
    root * /var/www/html
    file_server
}

service.toowoxx.de {
    # Reverse-Proxy zu localhost:8080
    reverse_proxy localhost:8080
}

localhost:9200 {
    # Load-Balancer für API
    reverse_proxy /api/* server1:1200 server2:1300 server3:1400 {
        # Header an Upstream weitergeben
        header_up Origin "localhost"
        # Header an Downstream entfernen
        header_down -Powered-By
    }

    # PHP-App aus /var/www/app
    root * /var/www/app
    php_fastcgi 127.0.0.1:9000
    file_server

    # Server-Header entfernen
    header -Server
    
    # CORS Header hinzufügen
    header Access-Control-Allow-Origin "*"
    header Access-Control-Allow-Methods GET
}

http://http-only.toowoxx.de {
    # Statischen Text zurückgeben
    respond "Only HTTP supported on this page"
}

Diese Konfiguration ist etwas komplexer, aber trotzdem gut lesbar. Wird eine solche Konfiguration in die Datei Caddyfile gespeichert, kann der Webserver mit dem Befehl caddy start aus diesem Verzeichnis gestartet werden. Es wird dann die Konfiguration im aktuellen Verzeichnis verwendet.

Konfigurationsmöglichkeiten

Caddy kann nicht nur mit einem Caddyfile, sondern vielen anderen Sprachen und Formaten konfiguriert werden. Bei Caddy werden sogenannte Konfigurationsadapter verwendet, die die jeweilige Konfigurationsdatei ausliest und Caddy damit konfiguriert.


Caddy kann auch mit dem nativen JSON-Format konfiguriert werden, welches viel mehr Möglichkeiten bietet, aber auch komplexer ist und mehr Schreibarbeit erfordert. Aus eigener Erfahrung ist dies aber nicht notwendig.


Kleine Liste an Konfigurationsadaptern:




  • Caddyfile

  • nginx

  • jsonc

  • YAML

  • HCL


So kann beispielsweise mithilfe des nginx-Adapters mit etwas Glück eine einfache nginx-Konfigurationsdatei direkt in Caddy verwendet werden.

Erweiterbarkeit und Plugins

Caddy ist nicht nur ein Web Server sondern vielmehr eine Web-Plattform. Durch das einfache Plugin-System lassen sich beliebige Plugins in Go schreiben, wodurch die Möglichkeiten praktisch unendlich sind.


Durch das Tool xcaddy lässt sich Caddy sehr einfach mit beliebigen Plugins zusammenbauen.


Auch wir haben Plugins geschrieben, zum Beispiel das Confidentiality Index Plugin, welches auf jeder Seite eine Ampel mit der geltenden Informationsklassifizierung anzeigt.


Caddy kann auch als Basis für neue Backends und Web-Apps verwendet werden. Manche Anwendungsfälle lassen sich mithilfe von Caddy und einem Caddyfile umsetzen, ohne eigene Software entwickeln zu müssen.


Beispiele für Plugins:




  • Cloudflare DNS

  • Azure DNS

  • WebDAV

  • caddy-exec zum Ausführen von Befehlen

  • Auth Portal

  • nginx-adapter

Für die Entwicklung

Caddy kann sehr gut als Webserver bei der Entwicklung genutzt werden, um produktionsnah testen zu können. Es können selbstsignierte Zertifikate automatisiert verwendet werden, denn Caddy kann diese selbstständig generieren und installiert diese kurzlebigen Zertifikate sogar im Zertifikatsspeicher des Betriebssystems, damit HTTPS-Zugriff auch auf dem lokalen Rechner ohne Warnungen vom Browser oder von Anwendungen funktioniert.

Sicherheit

Da Caddy die Go-Standardbibliothek nutzt, ist die Sicherheit des Webservers zum großen Teil durch die Standardbibliothek gegeben. HTTP, TCP, Netzwerkkommunikation, TLS und viel mehr sind bereits in der Go-Standardbibliothek durch erfahrene Entwickler programmiert und ausführlich getestet worden. So ist die Sicherheit der wichtigsten Kernkomponenten nicht in den Händen der Caddy-Entwickler, sondern in denen der Go-Entwickler.


In vielen Tests schneidet Caddy mit der Standardkonfiguration sehr gut ab, so zum Beispiel der Qualys SSL-Test mit A+.

Caddy entspricht im Thema Sicherheit nicht nur den Industriestandards sondern übertrifft diese mit den Standardeinstellungen ohne zusätzliche Konfiguration.

Geschwindigkeit

Da Caddy in Go geschrieben ist, ist die Geschwindigkeit allgemein sehr schnell und mit anderen in Go geschriebenen Backends vergleichbar. Die CPU-Auslastung sowie RAM-Nutzung ist bei Caddy allgemein sehr niedrig. So nutzt ein bei uns seit 2 Wochen produktiv laufender Caddy-Webserver 28 MB Arbeitsspeicher und hat in dieser Zeit ca. 3:30 Stunden CPU-Zeit verbraucht, was eine Durchschnittsauslastung von 1% bedeutet.

Vorteile und Features

Caddy bringt viele Vorteile und Features mit sich, darunter:




  • Webserver-Funktionalität

  • Reverse Proxy und Load Balancer mit Health Checks usw.

  • Unterstützung für PHP über FastCGI

  • Automatisches HTTPS über Let’s Encrypt, alternativ ZeroSSL (oder ein benutzerdefinierter ACME-Server)

  • Plugin-System

  • Hohe Geschwindigkeit, nutzt wenig Systemressourcen

  • Eigenes PKI-System zur Nutzung von selbstsignierten Zertifikaten

  • Cross-Platform und auch als Docker-Image verfügbar

  • Logging und Monitoring-Möglichkeiten

  • Admin-API zur Verwaltung des Webservers ohne Neustart/Downtime

  • Authentifizierung

  • Komprimierung (gzip und zstd), durch Plugins auch andere wie z. B. Brotli

  • Konfigurierbares Error-Handling

  • Directory Browsing (Web-GUI, um Dateien zu durchstöbern)

  • HTTP-Umleitungen/Weiterleitungen

  • HTTP/1.1, HTTP/2 (Standard), und HTTP/3 (experimentell)

  • HTTP/2 Server Push

  • IPv4/IPv6

  • Markdown-Rendering

  • Request-Matcher

  • Templates (ähnlich zu Server-Side Includes)

  • TLS (TLS 1.3, unterstützt auch TLS 1.2 und ältere TLS-Versionen)

  • Standardmäßig TLS 1.2/1.3

  • URL Rewrites

  • Variablen

  • Virtuelle Hosts

  • WebSockets

  • Zero-downtime reloads

Wer betreibt das Projekt?

Das Caddy-Projekt ist von Matt Holt gegründet worden. Matt hat einen Master-Abschluss in Computer Science und hat im April 2015 die erste Caddy-Version herausgegeben. Er wird auch durch einige Firmen und Personen gesponsort, darunter ein Go Security Lead und ein EFF-Mitglied für Let’s Encrypt.


Caddy arbeitet mit Ardan Labs zusammen und ist Teil der Stack Holdings GmbH aus Wien geworden. Zur Stack Holdings gehört auch apilayer, die viele nützliche Dienste anbieten und von großen Firmen wie Amazon, Apple und airbnb verwendet werden, darunter auch ZeroSSL, was bei uns Verwendung findet. Die Stack Holdings GmbH hält das Warenzeichen für Caddy. Caddy wird hauptsächlich durch ZeroSSL und den Sponsoren von Matt finanziert.

Caddy’s Wichtigkeit

Caddy wurde als Basis für andere Softwareprojekte und kommerzielle Dienstleistungen verwendet und die Reichweite dessen erstreckt sich bis in die akademische Forschung und die Diskussion in der Industrie.


CoreDNS wurde von Miek Gieben aus einem Fork von Caddy v1 erstellt, der modifiziert wurde, um DNS anstelle von HTTPS bereitzustellen. Es nutzte das Caddyfile-Konfigurationsformat von Caddy, die Plugin-Architektur und die Verwendung der Go-Programmiersprache.


Cloudflare implementierte einen MITM-Erkennungsdienst, der ursprünglich auf Caddy basierte und seine nativen MITM-Erkennungsfunktionen verwendet. Dieselbe Firma benutzte Caddy auch, um eine experimentelle TLS 1.3-Implementierung bereitzustellen, während sie an der Bildung der endgültigen TLS 1.3-Spezifikation beteiligt war.


Let’s Encrypt betrachtet Caddys Implementierung von ACME als den goldenen Standard von ACME-Clients, und Caddy ist daher auch zu einem Vorbild für andere Software geworden.


Caddy hat an einer Reihe von wissenschaftlichen Arbeiten mitgewirkt und verschiedene Recherchen ermöglicht:




  • Validierung der Machbarkeit des ACME-Protokolls in Produktionsservern

  • Bereitstellung von QUIC im Internet

  • Ein Test-Framework für Cloud-Failover-Mechanismen

  • Messung des Sicherheitsschadens von schwacher TLS-Kryptografie

  • Plädiert für Secure-by-Default-TLS

  • Verbesserung der Benutzerfreundlichkeit der Bereitstellung von HTTPS

Caddy bei Toowoxx

Toowoxx verwendet Caddy für Eigenentwicklungen, Entwicklungsumgebungen sowie auch produktiv für unsere Infrastruktur. Wir nutzen Caddy auch auf Azure in Containern, um HTTPS unkompliziert nach außen verfügbar zu machen. Wir bieten auch zwei Caddy-Plugins auf GitHub an:




  • Confidentiality Index Plugin

  • HTML Injection Plugin


Wir tragen auch aktiv zum Caddy-Projekt bei indem wir uns an der Entwicklung beteiligen.

Quellen


  • https://en.wikipedia.org/wiki/Caddy_(web_server)

  • https://github.com/mholt

  • https://caddyserver.com/

  • https://apilayer.com/

  • https://github.com/caddyserver/caddy

Entdecke weitere Artikel aus Unserem Blog

Fördermittel Digitalisierung Blogbeitrag Toowoxx IT

IT Beratung

2 Juni 2025

Fördermittel für Digitalisierung

Mehr lesen

Softwareentwicklung

2 Juni 2025

Diese 10 Tools sollten Designer kennen

Mehr lesen
was_ist_vault

IT Sicherheit, Softwareentwicklung

21 Mai 2025

Was ist Vault?

Mehr lesen

Business, Softwareentwicklung

20 Mai 2025

Standardsoftware und Individualsoftware im Vergleich

Mehr lesen

Softwareentwicklung

14 Mai 2025

Regex Suche innerhalb einer MongoDB mit MongoDB Compass

Mehr lesen

Allgemein, Softwareentwicklung

3 Apr. 2025

Was ist eine Progressive Web App?

Mehr lesen

Buchen Sie einen Termin für eine kostenlose Erstberatung!

Zur Terminbuchung
(+49)731 953495-0
Socialmedia
Facebook Instagram Linkedin X-twitter Youtube Github
Links
Datenschutz
Impressum
AGB
Kontakt

Wir bieten erstklassige IT-Dienstleistungen im Umkreis Ulm an.

Seiten
  • Startseite
  • Über Uns
  • Kontakt
Links
  • Datenschutz
  • Impressum
  • AGB
  • FAQ
  • Teamviewer Download
Hauptsitz
  • Krumbacher Str. 1
    86489 Deisenhausen
  • info@toowoxx.de
  • +49 8282 8812990
Standort Ulm
  • Münchner Str. 15
    89073 Ulm
  • info@toowoxx.de
  • +49 731 9534 950
Socialmedia

© 2025 Copyright Alle Rechte vorbehalten von Toowoxx IT GmbH