21. Juli 2020

Nginx und Ghost in Unterverzeichnis

Vor Kurzem haben wir einen Blog von Wordpress auf Ghost umgestellt. Bis zu diesem Zeitpunkt war der Blog unter unter einer Subdomain zu erreichen. Durch die Umstellung erscheint der Blog nun als Unterverzeichnis zur Webseite. Das hat vor allem aus SEO Gründen einen großen Vorteil, aber darum soll es hier nicht gehen.

Damit Ghost innerhalb eines Unterverzeichnis funktioniert, muss folgende Nginx Regel erstellt werden:

location ^~ /blog {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:2371;
    proxy_redirect off;
}

Wichtig zu beachten sind hier vor allem die letzten beiden Zeilen. Da Ghost für uns neu war, sind wir hier anfangs auf folgende Probleme gestoßen:

Cannot get /blog wurde uns angezeigt als wir das Verzeichnis /blog aufgerufen haben. Das "Problem": Jede Ghost Installation läuft über einen eigenen Port. Um den Port der relevanten Installation zu bekommen, kann man mit dem Shell Befehl ghost ls einige Informationen bekommen, unter anderem die Port-Nummer.

Ein anderes Problem war die fehlerhafte, bzw. fehlende Darstellung der Javascript und CSS Dateien und keine Möglichkeit, in das Ghost Dashboard zu gelangen. Mit der Zeile proxy_redirect off; wurden diese Fehler behoben.