Support » Allgemeine Fragen » WP hinter Reverse proxy funktioniert nicht mehr nach Update von 5.3 auf 5.7

  • Gelöst jcol

    (@jcol)


    Hallo, wir betreiben alle unsere Websites hinter einem Reverse Proxy (nginx), der auch die SSL-Zertifikate verwaltet. Dies funktionierte bisher wudnerbar, auch für worpdress. Wir haben in der wp-config:

     if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) ||
          (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {
             // http://wordpress.org/support/topic/wordpress-behind-reverse-proxy-1
             $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
             define('WP_HOME', 'https://www.balu-on-tour.de/');
             define('WP_SITEURL', 'https://www.balu-on-tour.de/');
             // http://wordpress.org/support/topic/compatibility-with-wordpress-behind-a-reverse-proxy
             $_SERVER['HTTPS'] = 'on';
             $_SERVER['SERVER_PORT'] = 443;
    

    und wir bekamen die Seite dann via Port 443 über HTTPS und via Port 80 über HTTP, beides via Proxy. Nach dem Update auf 5.7 funktioniert das reverse proxy prinzip zwar noch, allerdings nur für den Admin-Bereich!! Die Seite selbst liefert eine Fehlermeldung, wenn man genauer hinsieht, funktioniert offenbar das Zusammensetzen der URL nicht mehr, das Redirect-Ziel, das dem Browser geliefert wird, ist leer:

    Connecting to www.balu-on-tour.de (www.balu-on-tour.de)|144.76.146.222|:443... connected.
    HTTP request sent, awaiting response...
      HTTP/1.1 301 Moved Permanently
      Server: nginx
      Date: Tue, 27 Apr 2021 14:19:23 GMT
      Content-Type: text/html; charset=UTF-8
      Transfer-Encoding: chunked
      Connection: keep-alive
      X-Redirect-By: WordPress
      Location: https:///
      Content-Language: de
      X-Frame-Options: SAMEORIGIN
      X-Xss-Protection: 1; mode=block
      X-Content-Type-Options: nosniff
      Referrer-Policy: same-origin
    Location: https:/// [following]
    https:///: Invalid host name.

    Funktioniert da jetzt irgendwas grundsätzlich anders als bisher? Wir haben mehrere WP-Sites auf diesen Servern und ich sehe da Probleme auf mich zukommen….
    (Dass die Seite ohne Proxy funktioniert, kann ich über intern verfügbaren Zugriff unter Umgehung des Reverse Proxy verifizieren).

    Hat jemand eine Idee warum das nicht mehr funktioniert? An der NGINX-Konfiguration haben wir nichts geändert, nur WP aktualisiert. Vielen Dank im Voraus für einen Tip.

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) ||
          (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {
    // http://wordpress.org/support/topic/wordpress-behind-reverse-proxy-1
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
    define('WP_HOME', 'https://www.balu-on-tour.de/');
    define('WP_SITEURL', 'https://www.balu-on-tour.de/');
    // http://wordpress.org/support/topic/compatibility-with-wordpress-behind-a-reverse-proxy
    $_SERVER['HTTPS'] = 'on';
    $_SERVER['SERVER_PORT'] = 443;

    Das scheint mir etwas viel zu sein. Ganz sicher fehlt die schließende, geschwungene Klammerm aber vielleicht hast du nur übersehen, die mitzukopieren?

    Ich verwende für eine Installation mit Reverse Proxy nur

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

    Die beiden Konstanten-Definitionen

    define('WP_HOME', 'https://www.balu-on-tour.de/');
    define('WP_SITEURL', 'https://www.balu-on-tour.de/');

    gehören ganz gewiss nicht an diese Stelle, aber eigentlich sollten sie sowieso nur bei einer Staging-Umgebung verwendet werden, bei denen die Einträge in der Datenbank überschrieben werden muss. Schau doch mal, welche URL in wp_options in den Datenbankfeldern siteurl und home eingetragen sind (ggf. etwas in der Tabelle blättern). Wenn hier die URL https://www.balu-on-tour.de/ korrekt eingetragen ist, kannst du die beiden Zeilen in der wp-config.php löschen.

    Ansonsten habe ich auf meinem Testserver (wie gesagt mit Reverse Proxy) nach dem Update auf WordPress 5.7.1 keine Änderungen festgestellt.

    Thread-Ersteller jcol

    (@jcol)

    Hm da stand jeweils nur die http:// URL mit dem Port des eigentlichen Webservers:
    http//:www.balu-on-tour.de:8080

    Habe ich angepasst (https://balu-on-tour.de) und die entsprechenden Variablendeklarationen in der wp_config auskommentiert.
    Änderte aber nichts. Ich vermute, ich hatte das ursprünglich ohne Proxy installiert und musste dann diese Variablen „überschreiben“.

    Aber: ich habe jetzt mal Deine Variante verwendet – und voilà, die Seite funktioniert wieder. Irgendwas scheint da jetzt mit den von mir ausgewerteten Headern anders zu sein – aber egal, vielen Dank für den Hinweis!

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Das Thema „WP hinter Reverse proxy funktioniert nicht mehr nach Update von 5.3 auf 5.7“ ist für neue Antworten geschlossen.