Estoy intentando configurar un proxy inverso de Apache en un puerto específico (8001) que enlaza con un contenedor acoplable de WordPress:
$ 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
A continuación se muestra mi archivo de configuración de Apache:
/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>
Mi certificado parece válido y el proxy inverso vincula el contenedor con el nombre de dominio. Sin embargo, me bloquean el contenido mixto, por lo que las hojas de estilo, etc., no se muestran. Si elimino todas las cosas SSL de los archivos de configuración y uso HTTP en su lugar, todo se ve bien. Nunca antes había tenido este problema al configurar certificados SSL, pero en el pasado no había usado un proxy inverso. Sospecho que el problema está en eso y ¿HTTP/HTTPS está configurado incorrectamente en Apache?
Respuesta1
Se solucionó agregando lo siguiente en la parte superior (después de <?php) de wp-config.php
if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) || (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) { $_SERVER['HTTPS'] = 'on'; }