我想在 apache 反向代理后面的 docker 容器中运行 wordpress 安装。 apache 还应该处理 ssl 终止。
Docker 配置:
version: '3.1'
services:
wordpress:
image: wordpress:5.5-php7.4-apache
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: <user>
WORDPRESS_DB_PASSWORD: <password>
WORDPRESS_DB_NAME: wp1-db
volumes:
- ./wp1:/var/www/html
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: wp1-db
MYSQL_USER: <user>
MYSQL_PASSWORD: <password>
MYSQL_RANDOM_ROOT_PASSWORD: '<password>'
volumes:
- ./db1/:/var/lib/mysql
apache 配置
<VirtualHost *:80>
ServerName <servername>
ProxyPreserveHost off
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
RewriteEngine on
RewriteCond %{SERVER_NAME} =<servername>/ [OR]
RewriteCond %{SERVER_NAME} =<servername>
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
现在,当我在没有 ssl 的情况下在给定域下输入我的站点时,该站点至少显示出来,但在控制台日志中有一些跨域错误,但没有加载一些 css 文件。
... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
当我使用 ssl 进入网站时,我在控制台中收到大量混合内容错误。
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure script '<URL>'. This request has been blocked; the content must be served over HTTPS.
我想我在 wordpress 中缺少反向代理和配置的标头,内容将通过 https 加载?
非常感谢!!
编辑:
当我添加
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
在 ssl conf 中,我摆脱了混合内容错误,但我无法再加载内容。
GET https://<domain.name>:8080/wp-includes/css/dist/block-library/style.min.css?ver=5.6 net::ERR_SSL_PROTOCOL_ERROR
这个设置是否正确,我在 wordpress 中遗漏了什么?