Ghost auf Uberspace - HTTPS erzwingen

Bei Wordpress war es kein Problem, alles auf HTTPS umzuleiten. Ein paar Zeilen in die htaccess und die Sache war erledigt. Will man das bei Ghost machen, mit zusätzlicher Anpassung der config.js, endet man bei einer endlosen Weiterleitung [1,2].

Zitat aus der Ghost Dokumentation:

If you want to force all your traffic to use SSL it is possible to change the protocol of the url setting in your config.js file to https (e.g.: url: 'https://my-ghost-blog.com'). This will force the use of SSL for frontend and admin. All requests sent over HTTP will be redirected to HTTPS.

Nach ein paar fehlgeschlagenen Versuchen habe ich die Übernauten kontaktiert und gefragt, wie man das am besten lösen kann. Jonas hatte gleich zwei Lösungen für mich.

  1. HTTPS direkt über die htaccess zu erzwingen, dazu einfach mal diesen Teil des Wikis lesen.

  2. Einen Header setzen und die Ghost Konfiguration anpassen. Basierend auf diesem Ansatz.

Wir öffnen unsere htaccess und setzen dort folgendes unter den Proxy Eintrag ein:
RequestHeader set X-Forwarded-Proto https env=HTTPS
Das funktioniert zum Glück, denn Ghost betrachtet die Header.

Das sollte dann so aussehen:

RewriteEngine On  
RewriteRule ^(.*) http://127.0.0.1:[GHOSTPORT]/$1 [P]  
RequestHeader set X-Forwarded-Proto https env=HTTPS  

Dann nehmen wir uns noch unsere config.js vor
Hier entfernen wir, falls eingetragen, "urlSSL" und "forceAdminSSL" komplett.
Danach kann man unter "url:" https eintragen, was Ghost zu
https zwingt, wie oben bereits aus der Dokumentation zitiert.

config = {  
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'https://eigenedomain.tld',
[...]

Nach einem Neustart sollte alles über https laufen.