Ich versuche, einen Apache-Reverse-Proxy für einen bestimmten Port (8001) einzurichten, der mit einem WordPress-Docker-Container verknüpft ist:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9592d33ed6c1 wordpress:5.5.0-php7.3-apache "docker-entrypoint..." 23 seconds ago Up 21 seconds 0.0.0.0:8001->80/tcp martynbiz_wordpress_1
7c0d046560d6 mysql:5.7 "docker-entrypoint..." 25 seconds ago Up 23 seconds 3306/tcp, 33060/tcp martynbiz_db_1
Unten ist meine Apache-Konfigurationsdatei:
/etc/apache2/sites-available/martynbiz.conf
<Virtualhost *:80>
ServerName www.martyn.biz
ServerAlias martyn.biz
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
<Proxy http://localhost:8001/*>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8001/ nocanon
ProxyPassReverse / http://localhost:8001/
#RewriteEngine on
#RewriteCond %{SERVER_NAME} =martyn.biz
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.martyn.biz [OR]
RewriteCond %{SERVER_NAME} =martyn.biz
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</Virtualhost>
/etc/apache2/sites-available/martynbiz-le-ssl.conf
<IfModule mod_ssl.c>
<Virtualhost *:443>
ServerName www.martyn.biz
ServerAlias martyn.biz
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
<Proxy http://localhost:8001/*>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8001/ nocanon
ProxyPassReverse / http://localhost:8001/
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/martyn.biz/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/martyn.biz/privkey.pem
</Virtualhost>
</IfModule>
Mein Zertifikat scheint gültig zu sein und der Reverse-Proxy verknüpft den Container mit dem Domänennamen. Allerdings bekomme ich blockierte gemischte Inhalte, sodass die Stylesheets usw. nicht angezeigt werden. Wenn ich den gesamten SSL-Kram aus den Konfigurationsdateien entferne und stattdessen HTTP verwende, sieht alles in Ordnung aus. Ich hatte dieses Problem beim Einrichten von SSL-Zertifikaten noch nie zuvor – aber in der Vergangenheit habe ich keinen Reverse-Proxy verwendet. Ich vermute, dass das Problem damit zusammenhängt und dass HTTP/HTTPS in Apache falsch konfiguriert ist?
Antwort1
Das Problem wurde behoben, indem ganz oben (nach dem <?php ) von wp-config.php Folgendes hinzugefügt wurde.
if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) || (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) { $_SERVER['HTTPS'] = 'on'; }