通过 CF WORKER 给任意项目反代并加速

通过 CF WORKER 给任意项目反代并加速

CM 的教程详细讲解了如何给搭建在 #cloudflare worker 和 pages 上的项目进行优选加速,包括通过华为云国际版、gcore 等方式。那么就产生一个问题,如果你的项目不是搭建在 cf 上的,比如直接搭建在 vps 上或者 koyeb 这样的 paas 平台,是否可以加速?答案是肯定的

CM 项目加速教程:加速你的项目!详解 Cloudflare Workers & Pages 优选域名设置 | CMLiussss Blog

假定前提

假设你在 koyeb 上搭建了一个 uptime 项目,项目自动分配的域名是 uptime-yzong-1234abcd.koyeb.app,通过访问 https://uptime-yzong-1234abcd.koyeb.app 可以正常访问你的项目。(延伸资料:uptime部署教程

如何加速

第一步,反代 Koyeb 项目

koyeb 项目免费计划不支持绑定自定义域名,只有付费才可以,我们可以通过 cf worker #反代 来实现自定义域名访问(不要通过 uptime 内置的 Cloudflare Tunnel 隧道来反代)

登录 cf,新建一个 worker,粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
export default {
async fetch(request, env) {
let url = new URL(request.url);
// 使用外部环境变量,如果未定义,则使用默认值
url.hostname = env.HOSTNAME || 'uptime-yzong-1234abcd.koyeb.app';
url.protocol = env.PROTOCOL || 'https';
// 获取当前请求的 pathname,并用它来设置目标路径
let requestPathname = new URL(request.url).pathname;
url.pathname = requestPathname;
return fetch(new Request(url, request));
},
};

将代码中的 hostname 修改为你的 koyeb 项目域名protocol 保持 https 不变,点击 部署

如果是通过 vps 部署的项目,hostname 则为 vps 的 ip: 项目端口,protocol 为 http

回到这个 worker 的 设置 界面,点击左侧的 域和路由添加 一个路由,内容填写为 子域名/*,这个域名必须是已经托管在 cf 的域名,并在前面加上一个前缀作为子域名,后面的 /* 必须要有

image.png

第二步,在路由的域名下新增一个 DNS 记录

如果我们在上一步添加的路由是 uptime.ytian.us.kg/*,现在回到 ytian.us.kg 这个域名的 DNS设置。你路由的域名是哪一个,就设置哪一个域名的 DNS,不要跟我填一样的

新增一个 CNAME 记录,名称填路由地址的前缀,比如我的路由地址是 uptime.ytian.us.kg/*,那么前缀就是 uptime,这里的名称我就填 uptime,目标填写优选 IP 或优选域名。不要开启小黄云

image.png

这里我推荐几个还不错的用于项目加速的优选域名,你可以先用 itdog ping 一下再选择 1 个

1
2
3
4
5
6
cf-cname.xingpingcn.top
fan.yutian.us.kg
blog.cmliussss.com
cf.zhetengsha.eu.org
8cc.free.hr
cf.877774.xyz

第三步,开启域名的 Ws 和 grpc

回到域名的主设置界面,点击左侧的 网络,打开 websocketgrpc 选项

image.png

设置完成

现在打开你路由的域名,比如我的是 https://uptime.ytian.us.kg,就可以访问你在 koyeb 上部署的项目了,而且访问速度有明显提升