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
}