Für das Evang. Waldheim Esslingen, in dem ich lange Jahre ehrenamtlich aktiv war, betreibe ich die Website und dahinterliegende Webanwendung (siehe Projekte – Waldheim). Bisher sorgte der apache2 als Webserver und Reverse-Proxy für die Auslieferung der Seiten.
Um etwas mehr Performance zu erreichen habe ich in diesem Fall die meisten statischen Inhalte aus der Webanwendung in ein separates Verzeichnis verlagert und Apache2 so konfiguriert, dass diese Inhalte nicht über die Webanwendung (bei mir jetty) an den Reverse-Proxy ausgeliefert werden, sondern apache2 diese direkt ohne Umwege ausliefern kann.
Die dazugehörige Konfiguration (inkl. SSL und http/2) sieht so aus:
<IfModule mod_ssl.c>
<VirtualHost *:443>
Protocols h2 http/1.1
ServerName waldheim-es.de
ServerAlias www.waldheim-es.de
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory /var/www/pictures>
Options +FollowSymLinks
</Directory>
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /pics !
ProxyPass /pictures !
ProxyPass /2018 !
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8000/
ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/letsencrypt/live/waldheim-es.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/waldheim-es.de/privkey.pem
</VirtualHost>
</IfModule>
Diese Konfiguration musste ich mir in caddy erst erarbeiten, was aber erstaunlich einfach war.
Hier also die gleichwertige Konfigurationsdatei für caddy:
waldheim-es.de, www.waldheim-es.de {
# Set this path to your site's directory.
route {
file_server /pictures/* {
root /var/www
}
file_server /2018/* {
root /var/www
}
}
# Another common task is to set up a reverse proxy:
reverse_proxy 127.0.0.1:8080
}
verein.waldheim-es.de {
root * /var/www/verein
file_server
}