Meiner Erfahrung nach wird die NGINX-Konfiguration schnell komplex und kann zu einem Teil werden, den niemand aus Angst, etwas kaputt zu machen, anfassen möchte. Dieser Aspekt hat mich dazu bewogen, eine Alternative zu suchen.
Caddy ?
Zuerst einmal, was ist Caddy?
Es ist ein Multiplattform-Webserver, geschrieben in
GO mit einer einfachen Konfiguration und einer automatischen HTTPS-Einrichtung (mit
Letsencrypt).
Caddy ist Open Source unter der Apache 2.0 Lizenz. Zum Zeitpunkt des Schreibens nähert sich sein
Github Repository nähert sich den 40k stars.
Vergleich
Wir werden zwei minimale Konfigurationen vergleichen, um einen grundlegenden Reverse Proxy zu erhalten.
Reverse Proxy mit NGINX
server {
listen 443 ssl;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
Mit dieser Konfiguration muss man auch certbot installieren und das SSL-Zertifikat generieren.
Reverse Proxy mit Caddy
example.com {
reverse_proxy localhost:3000
}
Das ist alles! Caddy wird selbst das SSL-Zertifikat generieren und sich um die Umleitung von HTTP-Anfragen zu HTTPS kümmern.
Installation
Überzeugt von Caddy?
Um es zu installieren, folgen Sie einfach den Installationsanweisungen
hier.
Danach erstellen Sie Ihre Konfigurationsdatei: /etc/caddy/Caddyfile
Dann, wenn Sie einen NGINX-Server laufen haben (oder einen anderen Server, der auf den Ports 80 und 443 lauscht), müssen Sie ihn stoppen:
sudo systemctl stop nginx.service
sudo systemctl disable nginx.service
Schliesslich müssen Sie Caddy starten und sicherstellen, dass es bei jedem Neustart gestartet wird:
sudo systemctl start caddy.service
sudo systemctl enable caddy.service
Das war's!
Selbstverständlich kann man mit Caddy viel mehr als nur einfache Reverse Proxys machen, man kann zum Beispiel statische Dateien bereitstellen, Load Balancing betreiben, Gzip-Kompression durchführen...
Um das alles zu tun, müssen Sie überraschenderweise die
documentation !
Bonus
Caddy kann auch ohne jegliche Konfigurationsdatei gestartet werden, was praktisch sein kann, um schnell etwas zu testen, hier sind einige Beispiele:
Statischer Dateiserver aus dem aktuellen Ordner
caddy file-server --listen localhost:4444
Das ist das Äquivalent zu:
npx serve . -p 4444
aber leistungsfähiger.
Reverse Proxy mit automatischem HTTPS
sudo caddy reverse-proxy --from example.com --to localhost:3000