零成本部署一个自定义域名的短链接服务
你是否曾经历过这样的尴尬时刻?
精心准备的营销文案,却被一长串杂乱无章的URL破坏了美感;会议演示中,复杂的链接让听众手忙脚乱地输入错误;社交媒体上,字符限制让你不得不在宝贵的内容和完整链接之间艰难取舍……
链接冗长已不仅仅是美观问题,更是实实在在的效率杀手。研究表明,超过40个字符的URL会让用户产生本能的抗拒感,点击率直接下降23%。更不用说那些包含敏感参数、暴露业务逻辑的原始链接可能带来的安全隐患。
但问题远不止于此:
品牌形象受损 - 混乱的链接让专业度大打折扣
数据追踪困难 - 无法准确分析流量来源和用户行为
移动端体验差 - 小屏幕上输入长链接简直是噩梦
跨平台兼容性问题 - 不同应用对链接的解析和处理方式各异
是时候彻底改变这种现状了。
短链接服务并非新鲜概念,但传统方案往往面临部署复杂、成本高昂、性能瓶颈等新问题。直到现在——Cloudflare Workers的出现,让每个团队都能以零基础设施成本、分钟级部署、全球毫秒级响应的方式,拥有属于自己的企业级短链接服务。
在本文中,你将发现:
🔗 如何用零成本,搭建媲美商业产品的短链系统
🚀 无需开发经验,跟着点点操作一遍,无开发经验者也能轻松掌控
🌍 全球分布式网络,确保任何地方的用户都享受极致速度
📊 完整的数据洞察,让每次点击都产生价值
这不仅仅是一篇技术教程,更是一份数字效率升级指南。无论你是个人开发者、创业团队还是企业技术负责人,接下来的内容都将为你打开一扇新的大门——在那里,每个链接都是简洁、安全且智能的。
什么是Sink?
Sink 是一款完全运行在 Cloudflare 边缘基础设施上的无服务器 URL 缩短服务。它提供了一个用于链接管理、实时分析和 URL 重定向的 Web 控制面板,无需传统的服务器基础设施或数据库系统。
主要特点:
- Cloudflare原生:所有功能均利用Cloudflare Workers、KV存储、分析引擎和Workers AI。
- 无服务器架构:无需管理服务器、虚拟机或容器。
- 边缘部署:全球分布,延迟极低
- 自我托管:fork 并部署到您自己的 Cloudflare 帐户
适用人群:
- 需要带有分析功能的个人网址缩短服务的用户
- 需要链接跟踪和管理但又不想被供应商锁定的团队
- 希望自行托管和自定义 URL 缩短器的开发者
- 利用 Cloudflare 基础设施的组织
系统架构:
下图展示了主要子系统之间的交互方式,并参考了实际文件路径和 Cloudflare 绑定:
部署首页截图

创建链接截图

数据分析截图

一、上手操作步骤
今天用 Cloudflare Workers + 开源项目 Sink 为例,全程浏览器点点鼠标即可完成。
① 准备材料
- 自定义域名(已备案或未备案均可)
- GitHub 账号(用来 fork 源码)
- Cloudflare 账号(用来部署管理)
② Fork克隆代码仓库
- 打开GitHub Sink代码仓库,点击
Fork

- 设置仓库名(Repository name=
Sink),点击Create Fork创建自己的代码仓库

③ 创建KV 命名空间
- 创建KV 命名空间,并复制命名空间 ID。
“存储和数据库” → “Workers KV” → “Create Instance”
- 命名空间名称
SinkKV

④ 配置 Wrangler
- 复制命名空间 ID
4720********************2a4f22d,更新至你代码库文件wrangler.jsonc,点击Commit changes

关键配置字段:
| Field | Value | 目的 |
|---|---|---|
name |
"sink" |
Cloudflare 中的 Worker 名称 |
main |
"dist/server/index.mjs" |
构建后的入口点 |
assets.binding |
"ASSETS" |
静态文件的绑定名称 |
assets.directory |
"dist/public" |
包含静态资源的目录 |
compatibility_date |
"2025-05-08" |
工作 API 兼容版本 |
compatibility_flags |
["nodejs_compat"] |
启用 Node.js 兼容层 |
keep_vars |
true |
保留环境变量 |
upload_source_maps |
true |
上传源映射以进行调试 |
⑤ 部署到 Cloudflare Workers
- 登录 Cloudflare →
Workers 和 Pages→ 点击创建应用程序
- 选择”Workers” → “导入存储库”,点击
开始使用

- 选择”Github” → “选择克隆仓库
Sink“,点击Install & Anthorize

- 打开Workers和Pages设置应用程序,配置项目构建设置,点击
创建和部署- 项目名称:
sink - 构建命令:
pnpm run build或npm run build - 部署命令:
npx wrangler deploy

- 项目名称:
- 保存并部署项目,构建会失败没关系,继续后续步骤

⑥ 配置环境变量
- 转到“设置” → “变量和密钥” → “添加”,并配置必须环境变量:
NUXT_SITE_TOKEN=12345678
必须至少包含8 个字符。用于登录后台的访问页面的权限。NUXT_CF_ACCOUNT_ID=d0334********************51c66f
查找Cloudflare账户 ID,在账户行的末尾选择菜单按钮。NUXT_CF_API_TOKEN=sl3nq0-75we*************************INcpd
创建Cloudflare API 令牌,添加权限:帐户→帐户分析→读取。
⑦ 启用分析引擎
- 选择
Analytics Engine,启用点击创建数据集- Dataset Name=
sink - Dataset Binding=
ANALYTICS

- Dataset Name=
⑧ 重新部署
- 选择”部署”,点击
重试构建

- 构建中,大概等待1~2分钟,构建日志都是✅,即完成部署。

- 选择概述,点击访问,即可打开项目首页,访问不了就要用到自定义域名了
导航至https://your-worker.workers.dev/dashboard并使用您的帐户密钥NUXT_SITE_TOKEN进行身份验证登录。

⑨ 绑定自定义域名
- “设置” → “域和路由” → “自定义域”,填写域=
surl.chinapmcc.com,点击添加域,会自动生成DNS CNAME 记录。
也可手动添加DNS记录1
2类型=CNAME
surl → sink.chinapmcc.workers.dev
- 此时刷新你的域名sURL.chinapmcc.com,就能打开 Sink 的 Web UI,可以新增、管理短链了。

二、进阶玩法
自定义配置
app/app.config.ts
可以通过配置文件来修改页面的信息,提交后会自动部署页面,修改参考如下所示:
1 | export default defineAppConfig({ |
app/components/layouts/Footer.vueapp/components/home/Twitter.vueapp/components/home/Cta.vuei18n/locales/zh-CN.json
参考帮助文档
✨ askDeepWiki
https://deepwiki.com/ccbikai/Sink
⚡ short link(sURL) Demo
⚒️ Configuration
🔌 API
🧰 Similar open-source software
https://github.com/x-dr/short
https://github.com/Alessandro-Pang/short-link
三、常见问题
- 域名未备案?
解析到 Pages 的 CNAME 走境外 Anycast,国内访问无阻断,无需备案。 - 想换后端语言?
Pages 支持任何静态输出,可把 Sink 的 Cloudflare Functions 改成 Next.js、Hexo、Hugo 都行。 - 担心数据丢?
KV 每日自动快照,可在后台一键导出;也可定期wrangler kv key get --all备份到本地。 - 使用无限量免费的?
- Pages 免费档:每月 500 build 分钟、100 GB 流量,个人足够
- KV 免费档:每天 1000 写/10 万次读,短链场景基本用不完
- 超出后按官方标价付费,也可随时迁到自建数据库
四、结语
用 Cloudflare Workers Pages + KV,不写一行后端就把“域名、重定向、统计、SSL”全托管,真正做到零服务器、零成本、全球加速。
如果你只想快速拥有一个可自定义后缀、带访问报表的短链服务,上面的方案足够用;后期业务扩大,再考虑迁到自建 Postgres 也不迟。现在就打开浏览器,给你的品牌域名加上 /abc 的魔力吧!
- 标题: 零成本部署一个自定义域名的短链接服务
- 作者: xuliyaoPro
- 创建于 : 2025-11-21 00:00:00
- 更新于 : 2025-11-21 00:00:00
- 链接: https://chinapmcc.com/2025/11/21/应用案例/零成本部署一个自定义域名的短链接服务/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
















