借助Docker与Cloudflare Tunnels实现WordPress简易HTTPS配置
解决WordPress通过Cloudflare Tunnel实现HTTPS的无证书方案
核心原理
Cloudflare Tunnel本身已经为你的域名提供了自动续期的免费SSL证书,公网到Cloudflare边缘节点的连接是HTTPS加密的,问题出在WordPress无法识别自己处于反向代理后的HTTPS环境,导致生成的链接还是HTTP。我们只需要让WordPress信任Cloudflare的代理头,并强制使用HTTPS即可,全程无需手动配置和维护SSL证书。
可行方案
1. 修改WordPress配置文件(wp-config.php)
直接在WordPress的配置文件中添加代码,让它识别Cloudflare发送的代理头,并强制站点使用HTTPS:
- 进入Docker的WordPress容器:
docker exec -it 你的wordpress容器名 /bin/bash - 编辑
/var/www/html/wp-config.php,在/* That's all, stop editing! Happy publishing. */之前插入以下代码:
// 识别Cloudflare代理的HTTPS协议 if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } // 强制站点URL为HTTPS define('WP_HOME', 'https://你的公网域名'); define('WP_SITEURL', 'https://你的公网域名');
- 保存文件后退出容器,WordPress会自动切换到HTTPS模式。
2. Docker Compose环境变量配置(更适合容器化部署)
如果用Docker Compose管理WordPress,直接在docker-compose.yml的WordPress服务中添加环境变量,无需手动修改配置文件:
services: wordpress: image: wordpress:latest environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRESS_DB_NAME: exampledb # 添加HTTPS强制配置 WORDPRESS_CONFIG_EXTRA: | if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } define('WP_HOME', 'https://你的公网域名'); define('WP_SITEURL', 'https://你的公网域名'); volumes: - wordpress_data:/var/www/html
重启容器后配置自动生效。
3. 配合Cloudflare全局HTTPS重定向
在Cloudflare控制台中开启始终使用HTTPS,进一步确保所有访问都强制走HTTPS:
- 进入Cloudflare Dashboard -> 你的域名 -> SSL/TLS -> Edge Certificates
- 找到“始终使用HTTPS”选项并开启,所有HTTP请求会被Cloudflare自动重定向到HTTPS。
内容的提问来源于stack exchange,提问作者johnykes
相关产品推荐
相关产品推荐

