引言
GFW
现在是越来越优秀了,前一段时间还能正常访问的jsdelivr,现在发现全被干了。上网开搜才知道,原来jsdelivr在2022年初就因为备案方面问题,已经陆续被污染了,国内幸存能访问的地方不多(刚好博主这能访问,就一直挂着加速)。今天没挂旁路由访问网站,才发现原来所有用到cdn.jsdelivr.net
加速的图片都打不开,已经全部被干完了,急需一个替代品。发现网上有文章介绍说用Vercel反代jsdelivr效果不错,就急吼吼的跟着搞,结果差点就搞崩了。
原来不只jsdelivr挂了,Vercel其实在更早的时间已经被污染了,国内早就打不开。这一顿操作下来,差点就成了无用功。
幸好,Vercel是支持自定义二级域名,这就像当初 cloudfare 的 worker 被墙,也是通过定义二级域名解决了被墙的命运。
最终,还是先通过CF套给二级域名一层CDN,然后在Vercel添加二级域名访问,Vercel再对jsdelivr进行反代,从而实现了江湖救急。
不然本博客,从之前配置的方案【[Typora编辑 + PicGo上传 + Github作图床的实现办法]】(https://www.zctou.com/2046.html)以后,一直都是用的github作图床,jsdelivr来加速。一旦失去了jsdelivr这中间商,又不知道要有多大修改的功程量。
步骤:
前面说了,要实现Vercel反代jsdelivr,要先搞定Vercel方面的设置问题。
一、注册并部署Vercel
1. 注册Vercel
可Github注册,也可邮箱注册。博主用的是gmail注册,据说用qq邮箱注册会注册不成功,可自测。
注册过程就几个简单的点击,外加一个简单的email认证,就不再赘述了。
注册的时候要选免费的plan,也就是hobby
。这计划每月100G的流量,对一般小破站来说足够了。
2. 部署Vercel
2.1 下载并安装nodejs
要部署 vercel,需要在本地先下载nodejs并安装。这里的测试机为windowns 10 PC
。
nodejs下载地址:https://nodejs.org/zh-cn/
2.2 创建反代json
配置文件
本地随便一个位置建个新文件proxy.json
(文件所在路径最好不含中文)。博主这里路径是E:\cdn\proxy.json
。
文件反代配置为:
{
"version": 2,
"routes": [
{"src": "/(.*)","dest": "https://cdn.jsdelivr.net/$1"}
]
}
里论上,可以反代任何网址,只需要将上面的https://cdn.jsdelivr.net
改为你想要反代的URL即可,自测。
2.3 安装Vercel CLI(连接Vercel帐号用)
进带有proxy.json
文件夹,调出cmd命令窗口
,如下图:
直接在路径位置输出cmd
+【Enter】
,即可直接打开cmd命令窗口,并跳转到相应路径。
利用命令npm i -g vercel
安装 Vercel
。
npm i -g vercel
2.4 登录Vercel 并部署
A.登录 Vercel 帐号
CMD中,使用命令vercel login
。
vercel login
登录时要邮件确认。
去邮箱确认后,CMD这边显示登入成功
B.登录成功后部署
使用命令vercel -A proxy.json --prod
,往vercel帐号上部署反代的project.
如果当然路径不在e:\cnd
,可指定绝对路径:vercel -A E:\cnd\proxy.json --prod
。
下图是之前测试时截取的,经测试,部署里会生成.vercel
与.gitignore
文件,最好放进文件夹里,如cdn
文件夹,方便管理。
只有是否连接到已有的project时选no,并改名,其他选项直接Enter
即可。
2.5 查看效果
进后台:https://vercel.com/dashboard
即可查看并修改刚才部署的项目。
二、添加独立域名(二级域名)
本来麻,事情到这就完事了,可以用vercel给的二级域名访问,格式是这样的:
然而文章开头已经说过了,vercel.app早就挂了,国内是完全没法访问的。
本来操作到这一步,博主以为vercel这反代方法要挂了。
后面没想到的是,他也支持绑定独立域名,而且是二级域名,这就有了一线第生机。
这时候,你就得像之前操作worker.dev一样,为其指定一个独立的域名了(这里选的是二级域名)。
后台找到你的project
,点进去,找到 Settings
,点击Domains
。
右边有个 add
选项,添加你自己的二级域名,即可。
刚添加的时候,肯定会报错的。
然后会有红字提示你,接下来要把二级域名的cname指定到cname.vercel-dns.com
。
按照他提示的配置,去cloudfare 配置域名解析即可。
三、Cloudfare配置cname指向 vercel
至此,基本已经完成了为vercel添加独立域名反代jsdelivr的配置,剩下的就是去Cloudfare配置个cname指向即可。
注意开启小云朵。
配置都正确完成后,vercel控制面板即会刷新,不再有红字提示
提示为,要等段时间能生效:
Good news! Your DNS records are set up correctly, but it can take some time for them to propagate globally.
清除浏览器缓存或换设备,即可测试出,反代成功。
这原操作其实就是worker的翻版,只要你的域名没被墙,就可以正常反代。
当然了,就算这样设置反代成功,但定速度肯定比原来直接用jsdelivr加速github图片慢了不少,毕竟又兜了两圈。
四、批量更新博客图片地址
因为是网站的程序已经换到typecho,而且都采用的每三方图床,基本上只修改contens数表足以。
登录VPS,进行mysql数库容器,用命令批量更新旧连接为新链接即可。
针对typecho,更新命令为 :
UPDATE `typecho_contents` SET `text` = REPLACE(`text`,'旧地址','新地址');
除了typecho_contents表,你可能还要更新的表有:
- typecho_fields
- typecho_options
更新步骤如下:
- 1.使用
docker-ps'
找到数库库容器名。 - 2.使用
docker exec -it typecho-db /bin/sh
进入数据库容器。 - 3.使用
mysql -u root -p
,登入数据库,就是数据库的帐号与密码。 - 4.选择
typecho
数据表
5.使用命令更新
UPDATE
typecho_contents
SETtext
= REPLACE(text
,'https://cdn.jsdelivr.net/gh/','https://cdnzct.zctou.com/gh/');
总结:
既然vercel能成功用二级域名反代cdn.jsdelivr.net,那么用肯定用cf的worker也一样能反代成功,其实现原理都一样的。
扩展阅读:之前用worker反代v2ray也是大差不差不思路:
Better cloudflare ip + worker 提高科学上网速度
只是这种设置方法只能暂时用来应应急,应付应付小破站,以后还是要换cdn加速的。
毕竟jsdelivr被墙早有前科,以后也大概率不会被放出来。