我们的老朋友Cloudflare作为世界上为数不多的愿意向用户提供免费CDN的内容交付网络平台,一直是个人站长使用CDN防护(减速)、缓存加速、静态网页托管与边缘云计算的首选(它怎么这么多功能)。对于它的创新式使用(白嫖)也一直是大家津津乐道的话题。
由于众所周知的原因,Cloudflare的边缘节点虽然在非大陆地区访问速度很快,但在大陆的网络环境之下连通性与速度就一言难尽了。网上也有一些广为流传的Cloudflare自选节点IP以加速访问的方法,如Cloudflare Partners与SaaS(贴一篇文章CloudFlare for SaaS 官方免费CNAME接入/自定义节点(CF自选IP)教程)。但它们一个已经成为历史,一个麻烦且需要多个域名与信用卡验证,并不方便。本文为大家分享一种基于Cloudflare Workers的另类且轻量化的Cloudflare自选IP方式。
当然是cf账号,还有一个绑定到Cloudflare的域名
在本文中,这个服务原本的主机名称为A<example.com>(例如blog.pages.dev),你实际上想要暴露的域名称为B<example.mmoe.work>(例如blog.mmoe.work),这个域名需要接入到Cloudflare。
登入Cloudflare控制台,来到”Workers与Pages”,点击”创建应用程序”
创建一个”Hello World”Worker并取名保存,代码不用管(一会可以改)
然后”编辑代码”,向其中填入以下内容并点击部署:
export default {
async fetch(request, env) {
let url = new URL(request.url);
if (url.pathname.startsWith('/')) {
url.hostname="example.com"; /*改为你需要加速的主机名A(非Cloudlfare服务的域名也可以)*/
let new_request=new Request(url,request);
return fetch(new_request);
}
return env.ASSETS.fetch(request);
}
};
在Workers管理面板打开”设置->触发器->路由”添加一个路由,填入”<域名B>/*”(/*不能掉!),再选择你cf绑定的区域以添加
在对应的域面板的DNS记录设置里添加一条A记录解析,名称是你实际想要给这个服务使用的域名,IP就填你得到的Cloudflare优选IP(我推荐使用CloudflareST获取),注意关掉CDN,保存。
如果你有动态的优选IP域名,就使用CNAME记录,比如我在用的”*.cloudflare.182682.xyz”,这是一个使用泛域名解析的cname,可以使用任意前缀,更多优选域名参见这篇文章CloudFlare公共优选Cname域名地址,值得一提的是,本文中的这个域名也是由这个站长维护的。
如果一切正常,现在这个域名应该被加速了
Cloudflare Workers路由接受到对应域名的请求后,会接管请求到Workers,由于Workers会在离源服务器最近的位置上处理请求,那么它自然会在我们选择的IP上工作,上面的代码其实就是一个js反代。
在没有用上这奇技淫巧之前,我的Alist的cf代理下载文件只有几十kb的速度,使用后直接跑满我家宽带,效果还是很可观的。