【WP-ChinaYes】一个插件解决WordPress国内429(附反代配置)

发布于 / 信息应用 / 7 条评论

WordPress的CDN在19年被国内攻击后(存疑),一直屏蔽了大陆IP的访问,从大陆访问WP的服务都会返回429 Too Many Requests。虽然WP官方社区并不承认屏蔽了大陆地区的访问(相关链接),但是事实上包括更新、插件、主题等服务一直处于不可用的状态。另外即使抛开屏蔽的问题,Automattic的CDN到国内依然是比较缓慢的。

为了解决这个问题,在这之前有Kill429的插件,是一种基于主动的正向代理的方案,最近流行的WP-ChinaYes则是一个基于反向代理的方案,并且你可以自己搭建反向代理的源。

WP-ChinaYes这个插件是 @孙锡源 制作的,GitHub项目地址(点击前往),在此表示感谢( ̄▽ ̄)”,WordPress正是因为这样一群开源共享的开发者们才变得更完美。


反代演示站:cn.lty.fun

*提示:该方案可能失效,且目前屏蔽已解除,建议选择主动代理或自行测试修改。


一、插件安装

直接在GitHub的Release(点击前往)下载插件,解压到主题/wp-content/plugins目录即可(其实商店也能搜到(已被下架),不过要装这个插件的商店估计都没法用吧)。


二、自有源搭建

如果你担心别人提供的源稳定性、安全性可能存在隐患(比如劫持下载的压缩包),你也可以选择自己去搭建一个源。当然你也可以共享出来让大家一起用,毕竟个人的力量是有限的,人多了才能保证服务稳定下去。

按照WP的需求一共要配置10个反代,推荐使用泛域名的SSL证书。免费的有Let’s Encrypt,如果你不会使用acme.sh,可以使用FreeSSL申请。(有人提到Let‘s Encrypt的OCSP地址被污染了,实际上Chrome/Firefox都不校验LET的证书,不会对正常使用造成很大影响。)

下文的反代配置,我是按照最简化写的,并没有添加有关缓存的内容(因为个人觉得没必要),如果需要缓存自己配置CDN即可。其他关于Vhost的配置就不再赘述,SSL什么的自己配置就好了,按照你的习惯是用宝塔还是LNMP随你们,都一样的。


2.1 服务器的选择

搭建反向代理,你首先必须得保证你的服务器到WP的CDN是正常通信的(位于大陆以外的地区)。其次国内云厂基本都是使用电信163链路进行跨境访问,你需要准备一个对于大陆速度较为稳定的服务器,GIA最佳,其他的诸如阿里轻量、Azure、谷歌云等都是可以接受的。

至于CDN,国内的CDN均采用运营商托管节点,其跨境回源质量只能是低于阿里云、腾讯云等云厂商的顶级163商宽,所以个人认为从服务器向官方API发起的访问请求没必要让它去走CDN。


2.2 反代域名的准备

反代首先你得想好反代啥用啥域名。泛域名证书保护的范围是同级的域名,即*.lty.fun无法保护*.cn.lty.fun,所以在选择反代的域名时请不要再向上加级数了(你要申请10个个DV证书我也不拦着你233333)。

另外后面经过优化,可以使用一个域名的不同目录完成反代,具体可以往下翻。

序号 官方地址 反代地址 描述
api.wordpress.org apiworg.cn.lty.fun API请求地址
downloads.wordpress.org dl-wp-org.cn.lty.fun 下载地址
developer.wordpress.org dev-wp-org.cn.lty.fun 开发者API
profiles.wordpress.org pf-wp-org.cn.lty.fun
ps.w.org psworg.cn.lty.fun 插件页静态资源
s.w.org sworg.cn.lty.fun 静态资源
ts.w.org tsworg.cn.lty.fun 主题页静态资源
wordpress.org wp-org.cn.lty.fun 官网
wp-themes.com wp-themes.cn.lty.fun 主题官网
secure.gravatar.com grv.luotianyi.vc 头像

三、反代配置

为了降低维护的成本,在优化之后可以使用3个域名完成反代1个域名完成所有反代。之前测试出现的冲突经过@孙锡源的调试修正了冲突点,推荐使用此种方案。

注意WP程序本身可能与嵌入的链接存在冲突,所以api和download两个不能使用域名目录格式,我这里就以/api/dl反代这两个域名(其他目录均为网址作为路径,当然你修改配置文件中其他的目录也可以)。

*注意:以下代码框若未正常加载或无法复制请F5刷新此页面;若您来自搜索引擎MIP页面,请去掉URL中?mip参数前往本站源页面


从这里开始是原始的10个反代的方案,虽然麻烦一些不过经过验证是肯定没有问题的,如果你无法正确配置前面的目录反代,请选择原始的反代模式。

api.wordpress.org

WordPress的API反代,供服务器向WP的请求,可以不用套CDN。其中涉及到一个跳转(有没有都一样)和8个文本替换,其中替换成的链接请自己想好,后面都要对应的搭建反代。

downloads.wordpress.org

WordPress的下载地址,用于服务器下载软件包,可以不套CDN。

developer.wordpress.org

WP开发者API相关的,用于服务器请求API,可以不套CDN。

profiles.wordpress.org

不太清楚是干啥的,没看到前端加载,应该用不着套CDN。

ps.w.org

插件页静态文件(Plugin Ststaic),用于前端加载,建议使用CDN

s.w.org

静态资源,用于前端加载,建议使用CDN

ts.w.org

主题页静态资源(Theme Static),用于前端加载,建议使用CDN

wordpress.org

WP官网,意义不明,前端没看到有从这里加载文件,可以不套CDN。

wp-themes.com

WP主题的链接,用于后台主题预览页面加载,可以套CDN。

secure.gravatar.com

用于前端Gravatar头像的加载,建议使用CDN缓存。我之前做过反代这次就没有再搭建,对于其他前端的链接如果主题没有指定只需要修改/wp-includes/link-template.php即可。

头像的反代我在很久之前就自己搭建了一个,在这里也分享给大家( ̄▽ ̄)”

反代Gravatar加速网站头像加载

按理来说,Gravatar的头像文件都不大,加载起来应该还不算慢,然而……当我没说……最近的Gravatar走IPv6简直是大幅度拖慢站点的速度,好歹Automatic的服务器还 ...
https://luotianyi.vc/2157.html


四、分享&结语

如果你真的看到了这里,并且搭建好了反代,那么非常感谢你的支持,社区因你而精彩!博主在这里也把我自己搭建的共享出来,有需要可以直接取用( ̄▽ ̄)”。

API服务器api.lty.fun/api
下载服务器api.lty.fun/dl

如果你完成了反代的搭建,可以使用WP-China-Yes的“返璞归真”版本,直接将代码插入主题functions.php末尾即可实现此功能

另外也建议大家使用二级域名、CNAME关联的方式,提高DNS记录管理的效率;同时SSL证书路径统一化,即使三个月更换一次两个文件的替换也是很方便的,当然如果你会使用acme.sh这个过程都可以自动化完成。这样不论日后是迁移还是维护,都能够获得极大的便利。


*原创文章,转载请注明出处

转载原创文章请注明,转载自: Luminous' Home » 【WP-ChinaYes】一个插件解决WordPress国内429(附反代配置)

  1. 如果小于50mb资源是在GITHUB上的。。。。那jsdelivr他不更香么

  2. 前面用过一段时间,最后还是拿自己的服务器正向代理了,还是担心安全问题,等以后这个项目做大了先吧。

    1. @于文 自建正向代理和反代其实差不多,反代被利用的概率更低一些吧,而且这儿插件本体就十几行代码。安全问题确实有这个顾虑,毕竟插件被WP下架后准备修改官方API推送自己的更新,利用率不高,自建呗。
  3. 大佬图都在那儿找的啊

    1. @CZM 随手存官方图(@_@;)
      1. @Luminous _8(:з」∠)_
  4. 好!支持一下。
    (虽说咱的服务器位于西欧这个文章对我来说没多大用就是了)