笔者最近将运行在腾讯云的Wordpress迁移至本地,然后使用阿里云的服务器作为公网跳板来访问本地的Docker版Wordpress,方便笔者这种穷鬼到处搬家。
但是在重新部署https时遇到了不小的阻力,一个是混合载入,https与http内容共同载入。一个是修复这个问题后遇到的,后台页面全部没有权限禁止载入。
现在我将为此问题,以及如何迁移至本地部署等做一个完整的回顾。
备份到本地
首先选择一种方式备份到本地,这个方式有很多,笔者在之前介绍了一种快速备份整个服务器至本地的方法,故本文不再使用虚拟机迁移的方式。
WordPress是一个社区性质的东西所以有许多插件可以使用,故本文介绍一个插件:Updraft

该插件可以快速的备份整个wordpress

当你备份完成,即可在小水管下将整个网站以较小的大小保存下来。
备份到本地后,则完成了备份工作。
迁移到Docker
运行
docker run -it --name wordpress -p 8888:80 -v /data:/var/www/html -d wordpress
部署完成后,此时在浏览器访问http://localhost:8888/wp-admin/setup-config.php
进行安装,这时的ip地址是宿主机的IP
笔者使用远程的Mysql数据库,故直接进行数据库配置,没有数据库的同学需要自行部署数据库服务。

整个部署过程都可以随便输入,除了数据库,数据库需要保证连接,如果你之前已经修改过表前缀,建议表前缀更换为一个好记的前缀。
当部署完毕,则安装Updraft插件,将下载的文件一股脑丢进/wp-content/plugins/updraftplus,此时该目录如果你是复制粘贴的应该是/data/wp-content/plugins/updraftplus
在后台直接选择全部恢复,等待进度结束,就会要求你用以前的用户名登录了。

如果你从来没修改过表前缀,创建时也没修改过则无需再管。否则你需要连接数据库,将你建立时的表全部删除,否则会产生蜜汁影响。
公网远端代理
你可以使用任何方法连接至远端。Frp、tailscale都可以
笔者使用frp,笔者不对frp的安装做出解释,需求者需要自己去找教程。
frpc需要配置为tcp模式,即远端直接传递数据包到本地,在frps上看来,自己的65534端口就出现了一个web服务。

此时就完成了穿透部署。当访问公网ip:65534时,就会利用小水管把家里的服务器数据送出去。这样就完成了算力在本地,服务在公网。
全站https
接下来是大问题,如何才能以https的方式访问。笔者选择过nginx,但是直接使用nginx相对复杂,而且需要部署certbot实现自动更换证书,相对来说太麻烦了。
又因为笔者的其它服务受到了脚本小子的攻击。故笔者选择使用雷池WAF。
使用官方一件脚本部署
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
按照提示进入web后台,添加域名申请ssl证书

接下来添加应用,开启https访问

以笔者的设置,可以尝试https是否能正常访问。如果可以访问,则会发现后台出现了问题,js,css全部失效,提示混合载入。
修复混合载入,无法登录
首先,将url修改为https

修改PHP代码
注意:修改之前请备份原始文件,方便回退。
1. 打开网站根目录文件\wp-includes\functions.php,找到代码require( ABSPATH . WPINC . ‘/option.php’ );大概在第8行。
在下方添加以下两行代码:
add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { returnpreg_replace('/^(http|https):/', '', $src); }add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { returnpreg_replace('/^(http|https):/', '', $src); }

此时你就会发现,正常了,但是后台登录仍然有问题,表现为登录后提示“抱歉,您不能访问此页面”
修复抱歉,“您不能访问此页面”
登录WordPress管理后台出现“抱歉,您不能访问此页面” 或者 “将您重定向的次数过多”的问题时,可以使用本文提供方法快速解决。
解决方法
在你的网站根目录下,找到 wp-config.php 文件,并加入以下代码,即可解决“将您重定向的次数过多”问题:
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
关键说明:以上代码添加时,必须添加在if ( !defined('ABSPATH') )
代码之前才能生效!如下图所示位置:
否则,在登录WordPress网站后台时,可能会出现“抱歉,您不能访问此页面”的错误提示,导致还是无法登录网站后台。

灵感来自
https://blog.csdn.net/sdexcel/article/details/140455654
https://blog.csdn.net/bandaoyu/article/details/115410481
侵权联系删除