每一个国内WordPress网站站长都会碰到的问题,在某个时候,主题、某个插件,甚至WordPress本身更新出错,因为众所周知的原因。
我的客户里有30%左右将网站置于国内阿里云服务器上,这是一个我需要反复解决的问题。
我还没有找到100%可靠的方法,只能说下面的这个方案“足够”可靠。方法很简单:
第一步:WP站点服务器与国外某台服务器间建立稳定的隧道(自动断线重连),目前来看autossh是简单有效的选择:
# 在网站服务器与国外服务器之间建立SSH动态隧道
autossh -D 12345 -f -C -q -N user@1.2.3.4
命令参数请读者自行查询吧。
习惯CentOS的朋友请注意,如果你发现autossh安装后上述代码无法正常执行,请查看一下你的ssh版本,有可能是因为ssh版本太老了。
第二步:配置wp-config.php,让WordPress后台流量走这个隧道
# 在wp-config.php中为WordPress配置代理
define( 'WP_PROXY_HOST', 'socks5://127.0.0.1' );
define( 'WP_PROXY_PORT', '12345' );
这是参考文档。
这个方法能比较好地保障WordPress更新顺利,缺点是有可能拖慢后台,这取决于你选择的中间服务器的质量,关于中间服务器的选择,这里不便展开讨论。
为了尽可能避免非必要情况下过代理,读者可以自行为为上述配置添加限制条件,如:
# 只在侦测到特定Cookie值时才启用代理
if ( $_COOKIE['useproxy'] == 'yes' ) {
define( 'WP_PROXY_HOST', 'socks5://127.0.0.1' );
define( 'WP_PROXY_PORT', '12345' );
}
你应该能找到适合自己的条件设置方式。
并非所有的主题、插件都遵循WP_PROXY_HOST和WP_PROXY_PORT的代理设置,但这种情况很少见,除非你安装了代码极不规范的组件,碰到这样的情况,最好的选择是更换代码规范的组件。
autossh比反复手动重启ssh好很多,但它仍不是100%可靠的,所以读者不妨配合脚本对autossh进程本身进行管理,个人经验,这并非必要,这里就不展开了。
学会了使用小猫咪把wpshushu.com添加到直接用proxy访问,速度快多了…
不同代理,打开会比较慢。
如果境外节点使用阿里云,不允许作为proxy,曾经被警告过。
我自己的站点也都是离岸部署。
我想到的一种办法是,借助git在两地同步代码,但是没有具体实施。
这是一沟绝望的死水,清风吹不起半点漪沦。—闻一多
技术问题总有解决方法,阿里云在这个场景也不应当是首选,谨慎起见,就不讨论了。