wordpress - 无法通过 HTTPS 访问 WordPress docker 容器的静态文件
问题描述
我正在尝试通过 HTTPS 创建一个 WordPress 容器,我在 VPS 上运行 Apache 并将其用作代理将请求路由到 WordPress 容器。
我已经设法访问容器以通过 HTTPS 加载 WordPress 安装页面,但 CSS/JS 文件不会加载,因为它们是通过 HTTP 请求的 我不知道为什么重定向不适用于这些文件,我做了其他网站,比如这个。
如果我访问“ http://example.com/wp-admin/css/install.min.css?ver=5.2.2 ”上的文件,则重定向工作正常(在访问上面的链接后通过 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
我怎么解决这个问题?
解决方案
我找到了解决方案,看起来 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
推荐阅读
- r - 在 R 中创建一个函数返回一个绘图
- python - 计算来自(矩阵 - 常数)的矩阵的快速方法
- python - 我正在从 csv 文件导入数据并尝试在 python 中显示为图像,但图像显示不正确
- c - fgets 的返回值到主函数中
- c++ - 使用 include 保护和 #pragma once 重新定义 C++
- python - 将数据从 S3 读入 pandas 的最佳方法
- php - CentOS 7 中的 Imagick/Imagemagick 安装问题
- html - 如何移动 Svg 图标?
- ios - Swift - 在超类的覆盖函数中返回子类类型
- javascript - 如何使用 sequelize 在一个数据库请求中将数据插入多个表?