Es gibt ja diverse Möglichkeiten die am Ende einfach nur eine Einstellung setzen. Divers deswegen, da alle irgendwie davon ausgehen, dass man die Seite auch ohne SSL benutzen möchte. Das ist aber seit 2019 kaum noch sinnvoll... also wieso nicht alles überbügeln, und zwar da

SSL für Wordpress hinter reverse Proxy

Das Problem: WordPress „weiß" nichts von HTTPS

Viele Anleitungen zu SSL setzen voraus, dass die Seite auch ohne Verschlüsselung erreichbar bleiben soll. Seit der flächendeckenden Verbreitung von HTTPS ist das aber kaum noch sinnvoll – warum also nicht alles konsequent auf HTTPS umbiegen? Schwierig wird es, wenn WordPress hinter einem Reverse Proxy läuft, der die TLS-Verbindung terminiert. Dann spricht der Proxy zwar verschlüsselt mit dem Browser, leitet die Anfrage intern aber unverschlüsselt an WordPress weiter. PHP sieht eine HTTP-Verbindung – und WordPress baut prompt Endlosschleifen oder Mixed-Content-Fehler.

Die Lösung: HTTPS in der wp-config.php erzwingen

Der Proxy übergibt die Information über die ursprüngliche Verschlüsselung meist im Header X-Forwarded-Proto. Diesen werten wir früh in der wp-config.php aus – noch vor dem Laden von wp-settings.php:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Wer es ganz hart „überbügeln" will und sicher ist, dass alles über HTTPS läuft, kann auch schlicht $_SERVER['HTTPS'] = 'on'; setzen. Sauberer ist aber die Auswertung des Forwarded-Headers.

Am Proxy den richtigen Header setzen

Damit das funktioniert, muss der Reverse Proxy den Header auch mitsenden. Bei nginx zum Beispiel:

proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;

Checkliste gegen Redirect-Schleifen

  • WordPress-Adresse und Website-Adresse auf https:// stellen.
  • X-Forwarded-Proto am Proxy setzen und in wp-config.php auswerten.
  • Mixed Content beseitigen (interne URLs auf https).
  • Erst danach eine erzwungene http→https-Weiterleitung aktivieren – sonst kann sie mit der Proxy-Konfiguration kollidieren.