1 min read

ghost hinter Apache

ghost hinter Apache
Photo by Tandem X Visuals / Unsplash

Laufen auf einem Server mehrere Webseiten mit unterschiedlichen Systemen, ist ein Proxy-Server unvermeidlich. In meinem Fall ist das ein Apache Webserver, der gleichzeitig als Webserver und Proxy-Server fungiert. Das ist nichts besonderes, aber ich bin mit ghost Version 5.3.1 in ein Problem gelaufen, als ich zusätzlich statische Dateien bereitstellen wollte. Dies sollte eigentlich möglich sein, wenn diese in das ghost-Verzeichnis unter content/public einstellt. Hinter dem Apache-Proxy fügt ghost aber in dieser Version anscheinend ein Slash (/) ein. Damit wird ein Dateiname zu einem Verzeichnisnamen und die Datei wird nicht mehr gefunden. Ich habe keinen Weg gefunden, dieses Verhalten abzuschalten. Das Problem kann aber umschifft werden, wenn der Apache-Proxy so konfiguriert wird, dass er für das statische Verzeichnis /content/public/ zuständig wird. Dazu bedarf es vor allem einer Klausel

ProxyPass "/content/public/" !

in der Apache-Konfiguration des virtuellen Hosts. Diese Klausel muss vor der eigentlichen ProxyPass-Klausel erscheinen, Damit sie wirksam werden kann. Eine vollständige Konfiguration (Apache conf-Datei) sieht dann so aus:

<VirtualHost _default_:443>
  
    ServerName www.example.com

    DocumentRoot /var/www/ghost

    Alias "/content/public/" "/var/www/ghost/content/public/"

    <Directory "/var/www/ghost/content/public/">
        Require all granted
        Options -Indexes
        AllowOverride None
    </Directory>

    SSLEngine on

    RequestHeader set "X-Forwarded-Proto" "https"
    RequestHeader set X-Forwarded-Ssl on
    ProxyPreserveHost On
    ProxyPass "/content/public/" !
    ProxyPass "/" "http://localhost:2368/"
    ProxyPassReverse "/" "http://localhost:2368/"

    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>

Damit wird der Apache-Server für das statische Verzeichnis zuständig, weil die Ordneradresse "abgefangen" wird und der Apache die Dateien aus /content/public/ liefert.