在 Apache 反向代理后面的 Docker 中运行 Wordpress

问题描述

我想在 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 中遗漏了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)