Caddy2 als Webserver für Hugo-Webseite
Nach meinem Ausflug auf Hugo habe ich mich immer mal wieder über die für meinen Zweck völlig überdimensionierten Webserver-Kandidaten Apache und nginx geärgert – ich will doch einfach nur simple HTML-Dateien mit SSL bereitstellen…
Der Retter: Caddy!
Ich möchte in diesem Beitrag gar nicht auf die Unterschiede, Vor- und Nachteile zwischen Apache, nginx und Caddy eingehen, sondern nur kurz aufzeigen, wie mein Caddyfile für diese Webseite aussieht – quasi als Basis für eure eigenen Hugo-Webseiten.
Die Installation von Caddy ist denkbar einfach und hier beschrieben. Die Dokumentation rund um Caddy ist auch ziemlich gut und die Community recht aktiv – der Umstieg sollte euch also nicht allzu schwer fallen (bei mir war es eine Sache von rund 10 Minuten).
Zurück zum Thema: mein Caddyfile! So sieht es aus:
## Snippets ##
(static) {
@static {
file
path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.woff2 *.json
}
header @static Cache-Control max-age=5184000
}
(404) {
handle_errors {
@404 {
expression {http.error.status_code} == 404
}
rewrite @404 /404.html
file_server
}
}
# Websites
www.pratt.de {
redir https://pratt.de{uri} permanent
}
dominicpratt.de {
redir https://pratt.de{uri} permanent
}
www.dominicpratt.de {
redir https://pratt.de{uri} permanent
}
pratt.de {
root * /var/www/pratt.de
file_server
encode zstd gzip
import static
import 404
redir /feed/ https://pratt.de/index.xml permanent
}
Los geht’s mit zwei kleinen Snippets – das erste static
setzt für gewisse Dateiendungen den Cache-Control-Header, das zweite Snippet 404
redirected die 404-Fehlerseite auf meine eigene Fehlerseite (404.html). Diese Snippets können in allen Websitedefinitionen eingebunden werden.
Weiter unten geht’s mit den Webseiten weiter. Erst leiten ich alle Aufrufe von http(s)://www.pratt.de, http(s)://dominicpratt.de und http(s)://www.dominicpratt.de um auf meine eigentliche Webseite https://pratt.de. Mit Hilfe von {uri}
redirecten wir auch die übergebenen Aufrufparameter, damit der Benutzer auf die gesuchte Unterseite weitergeleietet wird.
Zum Schluss, im Block für meine Webseite https://pratt.de definieren wir die gzip-/zstd-Kompression mit encode zstd gzip
und lassen Caddy ganz simpel als „Fileserver“ dienen. Mit import static
und import 404
binden wir die oben erstellten Snippets ein. Außerdem leite ich jeden Aufruf von /feed/
auf die index.xml
um.