Zum Hauptinhalt springen

Caddyserver

Caddyserver ist ein in GO programmierter, mächtiger Open-Source-Webserver mit automatischem HTTPS-Support. Wir sind uns sicher, dass Caddyserver in den kommenden Jahren mehr und mehr an Beliebtheit gewinnen und Verbreitung finden wird.

Einmal installiert kümmert sich Caddy automatisch um die Aktualisierung des kostenlosen SSL-Zertifikats. Sie müssen dafür überhaupt nichts extra konfigurieren.

Open2C ist problemlos mit Caddyserver auf entsprechenden Servern mit optimiertem PHP-Setup lauffähig.

Vorraussetzung

Caddy hat erstklassigen Support für die Integration eines PHP-FPM-Setups mit der php_fastcgi Direktive.

In der folgenden Beispielkonfiguration gehen wir wie folgt vor:

  • (A) wir machen den Zugriff auf bestimmte Dateien oder Verzeichnisse unmöglich, in dem wir ein "Nicht gefunden" zurückliefern (Sicherungen, Konfigurationsdateien, Editor-Backupfiles, temporäre Ordner). In einem Apache-Setup würde dies über .htaccess-Anweisungen erledigt
  • (B) PHP lauscht auf dem Beispiel-Server auf Port 9000 und nimmt nur Anfragen vom Server selbst (127.0.0.1) entgegen
  • (C) wichtig: wir setzen die Umgebungsvariable URLREWRITE auf YES: Open2C aktiviert dann das Feature der sprechenden Pfade bzw. Slugs
  • (D) Unterstützung für das Open2C-Hash-Cache-Feature: Statische Dateien erhalten einen dynamischen Dateinamen, der solange gleich bleibt, bis sich die Datei ändert. Ermöglicht ein beliebig langes Caching und damit geringer Datenübertragung und höhere Performance
  • die anderen Direktiven wie file_server, encode oder header dienen der Auslieferung statischer Dateien, der Datenkomprimierung oder der Sicherheit

Beispielkonfiguration

www.example.com {
root * /var/www/html

# (A)
@disallowed {
path *.sql
path *~
path *.tgz
path *.tar.gz
path *.sav
path *.ini
path *.git
path /config/*
path /continuity/*
path /inc/*
path /storage/*
path /lib/schema/*
path /lib/templates/*
path /files/*
path /tmp/*
}
respond @disallowed "Not found" 404

encode zstd gzip

# php_fastcgi
#
# Various options available, see
# https://caddyserver.com/docs/caddyfile/directives/php_fastcgi
#
# (B)
php_fastcgi 127.0.0.1:9000 {
# important hint for Open2C and the Slugs feature!
# (C)
env URLREWRITE YES
}

# (D) Do rewrites for the Open2C Hash-Cache-Feature!
# works with Caddy 2.5.2
map {path} {uncached} {uncachedbool} {
~(?i)(/backend/static|/backend/mat|/images|/imageshows|/mat|/plugins|/static|/themes)(/.*)\.([a-z0-9]{8,40})\.([a-zA-Z0-9]+)$ "${1}${2}.${4}" "yep"
default "nope"
}
@uncached_map expression `{uncachedbool} == "yep"`
rewrite @uncached_map {uncached}

file_server {
hide .htpasswd .htaccess
}

header {
# disable clients from sniffing the media type
X-Content-Type-Options nosniff

# clickjacking protection
X-Frame-Options sameorigin

# keep referrer data off of HTTP connections
Referrer-Policy no-referrer-when-downgrade
}
}