我正在尝试通过HTTPS创建WordPress容器,我在VPS上运行了Apache,并将其用作将请求路由到WordPress容器的代理。
我已经设法通过HTTPS访问容器以加载WordPress安装页面,但是CSS / JS文件却无法加载,因为它们是通过HTTP请求的,我不知道为什么重定向不适用于这些文件,我做了其他类似这样的网站。
如果我访问“ http://example.com/wp-admin/css/install.min.css?ver=5.2.2”上的文件,则重定向为works fine(访问上述链接后,通过HTTPS打印CSS文件)
这是域上80到443的重定向。
<VirtualHost *:80>
ServerName example.com
ServerAdmin admin@example.com
Redirect permanent / https://example.com/
</VirtualHost>
这是443上的代理:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ProxyPreserveHost On
ProxyPass / http://172.20.0.100/
ProxyPassReverse / http://172.20.0.100/
SSLEngine on
SSLCertificateFile /fullchain.pem
SSLCertificateKeyFile /privkey.pem
</VirtualHost>
</IfModule>
WordPress容器仅在端口80上侦听
这是docker-compose文件:
version: '3'
services:
wpdb:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpres_admin
MYSQL_PASSWORD: pass
wordpress:
depends_on:
- wpdb
image: wordpress:latest
networks:
default:
ipv4_address: 172.20.0.100
restart: always
environment:
WORDPRESS_DB_HOST: wpdb:3306
WORDPRESS_DB_USER: wordpres_admin
WORDPRESS_DB_PASSWORD: pass
volumes:
db_data: {}
networks:
default:
external:
name: router_default
我该如何解决这个问题?
答案 0 :(得分:0)
我找到了解决方案,看起来WP已经配置为可通过SSL代理使用,并且无需更改WP容器或WP设置中的任何内容,所需要做的就是重写的标头的请求:
RequestHeader set X-Forwarded-Proto "https"
更新后的代理配置如下:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
<IfModule headers_module>
RequestHeader set X-Forwarded-Proto "https"
</IfModule>
ProxyPreserveHost On
ProxyPass / http://172.20.0.100/
ProxyPassReverse / http://172.20.0.100/
SSLEngine on
SSLCertificateFile /fullchain.pem
SSLCertificateKeyFile /privkey.pem
</VirtualHost>
有关更多信息:https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy 和https://webmasters.stackexchange.com/questions/97005/setting-x-forwarded-proto-under-apache-2-4