ghost hinter Apache
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.