WordPress 的插件生态大多是海外用户建起来的,在使用与云服务有关的插件的时候基本都会遇到国内服务器与海外云服务连接不通畅的问题。
其实 WordPress 本身支持使用 HTTP 透明代理访问的,因此我们可以在本地架设 HTTP 透明代理提供给 WordPress 使用以解决此类难题。
摘要结束,正文开始!
您不得使用下面所提及的工具和技术用于非法用途。
Ghost_chu’s Blog 使用的是 ShadowSocksR + Privoxy 解决方案,将 ShadowSocksR 挂载到本地服务器并创建 HTTP 代理给 WordPress 使用。
部署 ShadowSocksR 客户端
服务器环境为 Ubuntu 20.04.3 LTS。
我使用的是 ShadowSocksR 的一键安装脚本:
执行命令
git clone https://github.com/ZoeyWoohoo/shadowsocksr && cd shadowsocksr
为了操作简单,将两个文件 runssr
和 stopssr
挪到 /usr/local/bin
里,并授予可执行权限。
sudo chmod 755 runssr
sudo chmod 755 stopssr
sudo mv runssr stopssr /usr/local/bin
将 ShadowSocksR 安装到 /opt
目录
sudo mv shadowsocksr/ /opt/
source /etc/profile
编辑 ShadowSocksR 配置文件,填入你的服务器的信息
vim /opt/shadowsocksr/config.json
启动 ShadowSocksR
runssr
测试代理可用性
curl -x socks5h://localhost:1080 https://www.google.com/
可选的,如果你不喜欢 runssr 这种操作,可以将其安装为系统服务
sudo vim /etc/systemd/system/shadowsocksr.service
输入以下内容
[Unit]
Description=ShadowSocksR
[Service]
Type=simple
ExecStart=python /opt/shadowsocksr/shadowsocks/local.py -c /opt/shadowsocksr/config.json
[Install]
WantedBy=multi-user.target
保存,注册服务
systemctl daemon-reload
systemctl start shadowsocksr
查看服务是否运行正常
systemctl status shadowsocksr
如果一切正常,输出应该像下面的示例:
root@VM-24-3-ubuntu:~# systemctl status shadowsocksr
● shadowsocksr.service - ShadowSocksR
Loaded: loaded (/etc/systemd/system/shadowsocksr.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2022-01-04 18:35:59 CST; 1min 19s ago
Main PID: 3242329 (python)
Tasks: 1 (limit: 4608)
Memory: 9.1M
CGroup: /system.slice/shadowsocksr.service
└─3242329 /usr/bin/python /opt/shadowsocksr/shadowsocks/local.py -c /opt/shadowsocksr/config.json
Jan 04 18:35:59 VM-24-3-ubuntu.localdomain systemd[1]: Started ShadowSocksR.
Jan 04 18:35:59 VM-24-3-ubuntu.localdomain python[3242329]: 2022-01-04 18:35:59 INFO util.py:85 loading libsodium from libsodium.so.23
Jan 04 18:35:59 VM-24-3-ubuntu.localdomain python[3242329]: 2022-01-04 18:35:59 INFO local.py:49 local start with protocol[auth_aes128_md5] password [b'password_masked']>
Jan 04 18:35:59 VM-24-3-ubuntu.localdomain python[3242329]: 2022-01-04 18:35:59 INFO local.py:53 starting local at 127.0.0.1:1080
Jan 04 18:35:59 VM-24-3-ubuntu.localdomain python[3242329]: 2022-01-04 18:35:59 INFO asyncdns.py:324 dns server: [('127.0.0.53', 53)]
Jan 04 18:36:21 VM-24-3-ubuntu.localdomain python[3242329]: 2022-01-04 18:36:21 INFO util.py:85 loading libcrypto from libcrypto.so.1.1
最后设置开机自启动
systemctl enable shadowsocksr
Socks5 -> HTTP Proxy
上面我们提到,Wordpress 支持 HTTP 代理,但并不支持 Socks5 代理。
因此我们需要将其转换为 HTTP 代理。
在本文中,我们使用 Privoxy 将其转换为 HTTP 代理并使用 GFWList 规则。
安装 Privoxy
Privoxy 在 Ubuntu 的默认安装源就存在,直接使用 apt 命令安装
sudo apt-get install privoxy
sudo systemctl start privoxy
sudo systemctl enable privoxy
生成 GFWList 文件
使用 gfwlist2privoxy 项目,创建 GFWList 文件。
无脑执行命令
curl -4sSkLO https://raw.github.com/zfl9/gfwlist2privoxy/master/gfwlist2privoxy
bash gfwlist2privoxy 127.0.0.1:1080
mv -f gfwlist.action /etc/privoxy/
echo 'actionsfile gfwlist.action' >>/etc/privoxy/config
systemctl restart privoxy.service
现在,Privoxy 就处于 PAC 模式,只代理 GFWList 中的网站了。
如果你需要自行添加其他网站,你可以编辑 /etc/privoxy/gfwlist/action
这个文件。
设置 WordPress 的代理
打开 WordPress 的 config.php
找个看着顺眼的位置插入两行代码:
define('WP_PROXY_HOST', '127.0.0.1');
define('WP_PROXY_PORT', '8118');
保存退出即可。