[SOLVED]Haproxy und Wordpress

Started by Mentalist, April 08, 2020, 06:24:15 PM

Previous topic - Next topic
April 08, 2020, 06:24:15 PM Last Edit: April 08, 2020, 09:33:05 PM by Mentalist
Hi,

ich habe auf meiner OPNsense Haproxy am laufen in Verbindung mit letsencrypt. Alles funktioniert insofern einwandfrei. Ich erreiche alle Server über HTTPS. Nur nicht Wordpress. Im Netz berichten einige User über Probleme damit.
Hat jemad dies zum Laufen bekommen?

Was heißt denn genau WordPress funktioniert nicht?

Gruß
Marc

Gesendet von meinem VOG-L29 mit Tapatalk


Ich erreiche WP zwar, der Browser meldet aber eine nicht vollständig gesicherte Verbindung.

Proxmox VE
i3-4030U | 16 GB RAM | 512 GB SSD | 500 GB HDD
i3-2350M | 16 GB RAM | 120 GB SSD | 500 GB HDD

FW VMs:
2 Cores | 1 GB RAM | 20 GB SSD

Hm. ich hab das:

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';


in meine wp-config.php eingebaut. Funktioniert nicht.
Auch das scheint nicht zu funktionieren:
https://www.moonsmile.ch/index.php/2019/12/05/wordpress-hinter-haproxy-auf-opnsense/

Validiere, das tatsächlich auch das proto oder scheme korrekt übermittelt wird. (phpinfo() ist hier temporär dein Freund)
Alternativ entferne einfach mal das if und setze die variable direkt.
WordPress geht wohl immer noch davon aus http anstelle https zu sprechen.

Gesendet von meinem VOG-L29 mit Tapatalk


Wenn du hinten einen nginx als Webserver hast, kannst du auch die FastCGI-Variablen so setzen, dass es für Wordpress immer so aussieht, als käme die Verbindung über HTTPS rein. Vielleicht klappt das einfacher, Weil du den Code nicht manipulieren musst.

---

Sendet dein HAProxy überhaupt den Header X-FORWARDED-PROTO? Den Muss der LB injecten. Beim nginx plugin passiert das automatisch.

Ich konnte das Problem wie folgt lösen:

Am Anfang der wp-config.php habe ich Folgendes eingetragen:
/** Make sure WordPress understands it's behind an SSL terminator */
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';


Dazu habe ich in HAproxy bei den Öffentlichen Diensten unter Erweiterter Modus -> Erweiterte Einstellungen folgende Werte gesetzt:
•   Typ: http-server-close
•   Optionsweiterleitung: http-request set-header X-Forwarded-Proto https if { ssl_fc }

Jetzt funktioniert es. :-)

Wie kann ich es jetzt als gelöst markieren?

einfach in einem ersten post das topi am anfang [gelöst] oder [solved] eingeben
Internet: Willy.tel Down: 1Gbit/s, UP: 250Mbit/s Glasfaser  |
Router/Firewall: pfSense+ 23.09  |
Hardware: Netgate 6100