利用 Cloudflare Workers 免费搭建自己的短链服务 0 次阅读

前言

不知道大家有没有遇到过这种情况:辛辛苦苦分享出去的链接,没过多久就变成了“404 Not Found”。第三方短链服务跑路、限流、删链,早就不是什么新鲜事了。

之前我在博客里分享过自建的 API 服务 api.hzv5.cn,集成了 27 种实用接口。今天继续这个“自建工具箱”系列,跟大家聊聊如何用 Cloudflare Workers 免费搭建一个完全属于自己的短链服务。

为什么选择 Cloudflare Workers?

市面上短链服务不少,但要么收费、要么有广告、要么随时可能关停。自建的话,传统方案需要买服务器、搭数据库、配置环境,门槛确实不低。

而 Cloudflare Workers 的优势非常明显:

  • 完全免费:每天 10 万次请求的免费额度,个人使用绰绰有余
  • 无需服务器:基于边缘计算,部署即用
  • 自带 CDN:全球节点加速,访问速度飞快
  • 自定义域名:支持绑定自己的域名,短链完全由你掌控

准备工作

开始之前,你需要准备以下几样东西:

  1. 一个 Cloudflare 账号(免费注册即可)
  2. 一个域名(最好托管在 Cloudflare,非必须但推荐)
  3. 一点点 JavaScript 基础(复制粘贴也能搞定)

第一步:创建 Workers 服务

登录 Cloudflare 控制台,点击左侧菜单的 Workers & Pages,然后点击 创建应用程序

  1. 选择 创建 Worker
  2. 给 Worker 起个名字,比如 url-shortener
  3. 点击 部署,完成基础创建

第二步:写入核心代码

在 Worker 的编辑器中,粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 短链映射表 —— 你可以自由增删改
const LINKS = {
'gh': 'https://github.com',
'docs': 'https://docs.hzv5.cn',
'api': 'https://api.hzv5.cn',
// 添加你自己的短链在这里
// 'short': 'https://your-long-url.com/xxx'
};

async function handleRequest(request) {
const url = new URL(request.url);
const path = url.pathname.replace('/', '');

// 根路径访问返回使用说明
if (!path) {
return new Response(
`短链服务已启动 🚀\n可用短链:${Object.keys(LINKS).join(', ')}`,
{ status: 200 }
);
}

// 查找对应的长链接
const target = LINKS[path];
if (target) {
return Response.redirect(target, 301);
}

// 未找到返回 404
return new Response('短链不存在', { status: 404 });
}

addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});

代码逻辑非常简单:访问 https://你的域名/gh 时,会自动 301 跳转到 https://github.com。

第三步:绑定自定义域名(可选)

如果你想把短链服务挂在自己的域名下(比如 s.hzv5.cn),只需要:

  1. 在 Workers 页面点击 触发器 → 自定义域
  2. 输入你想用的子域名(如 s.hzv5.cn)
  3. Cloudflare 会自动完成 DNS 配置

这样你就可以用 https://s.hzv5.cn/gh 这样的链接了,比 workers.dev 的域名专业得多。

进阶玩法:接入 KV 存储

上面这种把映射写死在代码里的方式,优点是简单,缺点是每次增删改都要重新部署。如果你的短链比较多,或者想做个管理后台,可以接入 Cloudflare 的 KV 存储:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 使用 KV 存储读写短链
export default {
async fetch(request, env) {
const url = new URL(request.url);
const key = url.pathname.slice(1);

if (request.method === 'POST') {
// 新增短链
const { short, long } = await request.json();
await env.LINKS.put(short, long);
return new Response('创建成功');
}

// 跳转
const target = await env.LINKS.get(key);
return target ? Response.redirect(target, 301) : new Response('Not Found', { status: 404 });
}
}

这样你就可以通过 API 动态管理短链了,甚至还能做一个简单的管理页面。

写在最后

整套方案从注册到上线,熟练的话十分钟就能搞定。相比依赖第三方服务,自建短链的好处是数据在自己手里、域名在自己手里、随时可控。

就像我之前说的,让博客变得更有“灵气”,靠的就是这些自己动手搭建的小服务。如果你也在折腾类似的东西,欢迎交流~

下一篇 记录一下豆包视频去水印的研究过程,以及fallback_api加密数据qAAB开头数据的解密。
感谢您的支持!
微信赞赏码 微信赞赏
支付宝赞赏码 支付宝赞赏