Ich habe heute in der Firma die Webseite umgezogen und da diese sich nun eine IP mit anderen Seiten teilen muss, läuft sie hinter einem Reverse Proxy (nginx). Die Verbindung zwischen Proxy und Webseite läuft dabei über HTTP.
Wenn ich die Seite aufrufen wollte, lief der Browser laufend in einen Redirect Loop und ich wusste nicht wieso. Eine Seite, ebenfalls WordPress, die ich parallel auf das selbe System umgezogen habe, funktionierte ohne Problem mit der identischen Konfiguration. Nachdem ich alles andere ausgeschlossen hatte, kam mir der Gedanke das womöglich WordPress selbst für den Loop verantwortlich ist und tatsächlich, es war so. Der Unterschied zu der anderen WordPress Installation war, folgende Konfiguration in der wp-config.php:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
Kein Plan wieso das bei der einen Installation enthalten war und der anderen wieder nicht. Eventuell gab es bei der Installation einen Diese Seite befindet sich hinter einem Reverse Proxy Button, an den ich mich nicht erinnere. Allerdings weiß ich nicht wieso ich das dann bei der einen Installation ausgewählt haben soll und bei der anderen nicht, da beide vorher nicht hinter einen Reverse Proxy liefen.
Natürlich muss auch vom Reverse Proxy der Header entsprechend gesetzt werden, damit es funktioniert, was man in Nginx z.B. wie foglt tut:
proxy_set_header X-Forwarded-Proto $scheme;
maltris
Das Problem ist hier nicht die Tatsache, dass sich die Seite hinter einem Reverse Proxy befindet. Das Problem ist hier die Tatsache, dass in diesem konkreten Fall zwischen Reverse Proxy und dem Upstream http gesprochen wird, während der Client von außen mittels https zugreift. Soll der Upstream erfahren, dass er trotz interner http-Kommunikation das Schema auf https stellen muss, muss das explizit mitgeteilt werden. Ein Standardfehler bei Reverse Proxy-Setups.
Ein „Diese Seite befindet sich hinter einem Reverse Proxy“-Button existiert nach meinem Stand in WordPress weder während der Installation noch im Dashboard. Aber da kann ich mich irren, habe schon länger keine frische Installation durchgeführt.
Sebastian
Jepp das ist mir schon klar, die proxy_set_header Zeile hatte ich ja tatsächlich schon vorher drin, es fehlten nur in der einen WordPress Installation die 2 Zeilen in der Config, was dazu führte das WordPress selbst nenn redirect machte.
Ich hab auch ewig keine Neuinstallationen mehr gemacht. Wahrscheinlich wird bei WordPress Updates die wp-config.php einfach nicht geupdatet. Die Installation wo die zwei Zeilen in der conig standen war nämlich etwas neuer. Ich denke deshalb das das mal in irgend einem Release Einzug gehalten hat.