问题描述
我想在 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.
- 我尝试手动将所有数据库条目从 http:// 替换为 https://,并使用更好的替换插件。
- 我尝试将 wordpress 地址和站点地址从 http://domain.name:8080 更改为 1. https://domain.name 2. https://domain.name:8080
我想我在 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 中遗漏了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)