安装仅HTTPS访问的官方WordPress Docker,提前配置解决静态资源加载问题
部署初始化阶段零混合内容的配置方案
直接跳过「等WordPress装完再手动改配置修混合内容」的流程,从容器构建阶段就把Traefik反向代理的HTTPS识别规则嵌入初始化流程,确保WordPress安装向导、后台、前端从第一次访问开始,就生成全HTTPS的资源路径,不会触发浏览器的明文内容拦截。
具体实现步骤
修改Dockerfile,把HTTPS代理识别规则提前放到镜像的源配置目录
官方WordPress镜像的所有基础文件都存在/usr/src/wordpress目录下,容器第一次启动时,会把这个目录下的示例配置文件复制到Web根目录,生成正式的wp-config.php,之后才会拉起安装向导。我们只需要把识别Traefik请求标记的逻辑,提前追加到这个目录下的示例配置文件里,生成的正式配置就会自动带上这套规则,根本不需要等安装流程走完再手动改文件。
修改后的Dockerfile参考:FROM wordpress:5.3.2-apache EXPOSE 80 USER root # 将反向代理HTTPS识别逻辑追加到源目录的示例配置 RUN echo ' // 识别Traefik传递的HTTPS请求标记 if (isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) && $_SERVER["HTTP_X_FORWARDED_PROTO"] === "https") { $_SERVER["HTTPS"] = "on"; } ' >> /usr/src/wordpress/wp-config-sample.php提前预设站点访问地址,避免安装阶段生成带HTTP协议的固定路径
就算HTTPS识别规则生效,如果安装向导里填的站点地址是HTTP的,WordPress依然会基于填写的内容生成明文的静态资源链接。可以用官方镜像自带的WORDPRESS_CONFIG_EXTRA环境变量,在初始化阶段就把站点地址强制设为HTTPS,不用进到安装向导再手动填:
在容器编排配置里新增对应环境变量:environment: WORDPRESS_CONFIG_EXTRA: | define('WP_HOME', 'https://你的站点域名'); define('WP_SITEURL', 'https://你的站点域名');
实操注意点
- 规则生效顺序:上面追加的HTTPS识别逻辑,会在WordPress加载核心函数库之前执行,确保WP判断资源路径协议时,能准确识别当前请求是通过HTTPS接入的,不会把静态资源生成为HTTP链接。
- 避免配置被覆盖:别直接改Web根目录下动态生成的文件,官方镜像启动时会覆盖Web根目录的旧文件,直接修改源目录的示例配置,才能保证容器重建后规则依然有效。
- Traefik请求头校验:Traefik默认会在HTTPS路由里自动传递
X-Forwarded-Proto: https请求头,只要没手动关掉代理头传递功能,上面的判断逻辑就能正常触发,不需要额外改Traefik的配置。
按上面的配置构建镜像、启动容器后,第一次访问站点时,安装向导加载的所有静态资源就会直接走HTTPS协议,不会触发浏览器的混合内容拦截,整个安装流程可以全程无异常跑完。
内容的提问来源于stack exchange,提问作者Hemen
相关产品推荐
相关产品推荐

