Cloudflare 从入门到入土,全教给你

Cloudflare 从入门到入土,全教给你

EN 中文

说个真事。

两年前我第一次用 Cloudflare,就是改个 DNS 而已。心想,嗯,免费的,界面还挺干净。

然后我发现了 Pages。

然后我发现了 Workers。

然后我发现了 R2、KV、D1、Durable Objects、Zero Trust、Turnstile、Email Routing……

现在我整个数字生活——个人网站、公司官网、域名邮箱、API 服务、数据库、图床、文件存储、VPN 替代品——全跑在 Cloudflare 上。

这篇文章,是我从一个”改个 DNS 就走”的新手,到现在把整个基础设施搬上去之后的完整复盘。从入门到入土,全教给你。


第一层:DNS — 一切的起点

90% 的人用 Cloudflare,就是从 DNS 开始的。注册账号,把域名 NS 改到 Cloudflare,完事。

但有几个东西你可能没注意到:

橙色的云朵和灰色的云朵

点一下 DNS 记录旁边那个云朵图标:

  • 橙色(Proxied):流量经过 Cloudflare → 你获得 CDN 加速 + DDoS 防护 + SSL + WAF,但 Cloudflare 知道你的源站 IP
  • 灰色(DNS Only):Cloudflare 只做 DNS 解析,流量直连你的服务器

绝大多数场景开橙色就对了。但如果你跑的东西不支持反代(比如某些 P2P 节点),就关掉。

DNSSEC 一定要开

在 DNS 设置页面底部,有个 DNSSEC 选项。开了它,别人就无法劫持你的域名解析。设置过程需要去你的域名注册商那边加一条 DS 记录,Cloudflare 会给你具体的值,照着贴就行。

TTL 留 Auto 就行

Cloudflare 的 DNS 是全球 Anycast 的,TTL 默认 Auto(300 秒)。你不需要手动调,除非你有特殊的故障转移需求。


第二层:CDN 与缓存 — 白嫖的开始

一旦你的 DNS 变成橙色,你的网站就已经被 Cloudflare 的 CDN 包裹了。全球 300+ 城市的边缘节点,自动缓存你的静态资源。

但你得知道怎么配。

缓存规则(Cache Rules)

默认情况下,Cloudflare 只缓存 JS/CSS/图片等静态文件。如果你想缓存 HTML 页面、API 响应、或者自定义缓存行为,进 Caching → Cache Rules 自己加规则。

比如:你的博客页面更新频率很低,可以加一条规则:

  • 匹配 URL Path: /blog/*
  • 缓存时长: 1 小时
  • 浏览器缓存: 10 分钟

这样全球访客都能从最近的节点拿到你的页面,不用每次回源。

Polish(图片优化)

免费版没有,Pro 版($25/月)才有。自动 WebP 转换、图片压缩、尺寸适配。如果你的站图片多,这个功能值回票价。

Workers 取代 Page Rules

老玩家可能还记得 Page Rules——那个界面简陋但功能强大的规则系统。Cloudflare 现在把它拆成了 Cache Rules、Redirect Rules、Configuration Rules 等更细的模块。旧 Page Rules 还能用但不推荐了,新功能更灵活。


第三层:安全 — 免费的东西比你想象的多

SSL/TLS — 一键 HTTPS

进 SSL/TLS 设置,把模式从 Flexible 改成 Full (Strict)

什么意思?

  • Flexible:浏览器到 Cloudflare 是加密的,但 Cloudflare 到你的服务器是明文的。半吊子安全,不建议。
  • Full:两端都加密,但不验证证书。中间人攻击有理论风险。
  • Full (Strict):两端加密 + 证书验证。你需要在源站装一个证书(Cloudflare 的 Origin CA 免费签发,15 年有效期),这是正确答案。

如果你用 Cloudflare Pages,这些自动搞定,不用操心。

WAF(Web Application Firewall)

免费版有基础规则,可以拦截常见的 SQL 注入、XSS 等。进 Security → WAF,开启:

  • Managed Rules:Cloudflare 维护的规则集,免费版有 Cloudflare Managed Ruleset
  • 自定义规则:比如”如果请求来自某个国家 AND URL 包含 /admin,直接 block”

Bot Fight Mode

免费版功能,能自动拦截已知的恶意爬虫和扫描器。但它偶尔会误杀正常的爬虫(比如 Googlebot)。如果你发现 SEO 排名掉了,先检查这里。

Rate Limiting

免费版可以设置基础速率限制。比如”同一个 IP 对 /login 的请求,每分钟不超过 10 次”。防爆破攻击必备。

DDoS 防护

自动开启的,不需要你配什么。这是 Cloudflare 的看家本领——全球最大的网络层 DDoS 防护,不额外收费。

我曾经被一次小规模 DDoS 打过(应该是竞争对手扫端口),Cloudflare 在我毫不知情的情况下自动吸收了。事后看 Analytics 才发现一夜之间挡掉了 40 万个请求。


第四层:Pages — 你的第一个无服务器网站

到这里,你已经不满足于”只做 DNS 和缓存”了。你想把网站也搬到 Cloudflare 上。

Cloudflare Pages 就是答案。

它是一个静态站托管平台,类似 Vercel / Netlify,但:

  • 无限带宽、无限请求量(免费!)
  • 全球 CDN 自带
  • 自动 HTTPS
  • 支持自定义域名
  • Git 推送自动部署

怎么用?

  1. 把你的网站代码推到 GitHub
  2. 在 Cloudflare Pages 连接你的仓库
  3. 设置构建命令(比如 npm run build)和输出目录(比如 dist
  4. 每次推送 main 分支,自动构建部署

就这么简单。

Pages Functions

如果你的网站需要后端逻辑,Pages 内置了 Functions 功能——其实就是 Workers,但跟你的静态站部署在同一套流程里。在项目根目录创建一个 functions/ 文件夹,里面放 TypeScript/JavaScript 文件,每个文件就是一个 API 端点:

functions/
  api/
    webhook.ts    →  /api/webhook
    auth.ts       →  /api/auth

文件路径就是 URL 路径,零配置。

我用 Pages 部署了两个站——jask.dev 和 uzenlabs.com。Git push 之后大概 30 秒上线,从来不用操心服务器、证书、CDN 配置。


第五层:Workers — 真正的边缘计算

如果说 Pages 是”托管静态网站”,那 Workers 就是”在 Cloudflare 的边缘节点上跑你的代码”。

你的代码不是跑在某一个数据中心,而是部署在全球 300+ 个城市。用户从东京访问,代码在东京执行;用户从纽约访问,代码在纽约执行。延迟极低。

一个 Worker 长什么样?

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const url = new URL(request.url);
    
    if (url.pathname === "/api/time") {
      return Response.json({
        time: new Date().toISOString(),
        region: request.cf?.colo || "unknown",
      });
    }
    
    return new Response("Hello from the edge!");
  },
};

就这么几行。部署之后,全球可用。

能拿来干嘛?

我用 Workers 做过这些东西:

  • API 聚合层:把多个第三方 API 的数据聚合后统一返回,前端只需要调一个接口
  • 认证中间件:JWT 验证 + 路由权限控制
  • Webhook 处理:接收 GitHub/Telegram 的 Webhook,做数据加工后转发
  • 短链接服务:一个 KV 查询 + 重定向,50 行代码搞定
  • CORS 代理:绕过浏览器的跨域限制
  • 定时任务(Cron Triggers):每天定时爬数据、发通知

定价

免费版:每天 10 万次请求,10ms CPU 时间/请求。对个人项目来说完全够用。

付费版($5/月):1000 万次请求,30 秒 CPU 时间/请求。你从免费版升上去的那个瞬间,会感叹之前花的那些 VPS 钱都喂了狗。

开发体验

npm create cloudflare@latest my-worker
cd my-worker
npx wrangler dev    # 本地开发
npx wrangler deploy # 部署

wrangler 是 Cloudflare 的 CLI 工具,体验跟 Vercel CLI 差不多,但功能更全。本地开发、热重载、日志查看、secrets 管理,一条命令搞定。


第六层:存储全家桶 — R2 / KV / D1 / Durable Objects

一旦你开始在 Workers 上写后端逻辑,你就需要存储。Cloudflare 准备了一整套:

R2 — 对象存储(S3 兼容)

跟 AWS S3 一样的 API,但没有出口流量费。这个是杀手锏。

你在 S3 上存了 100GB 的文件,下载一次花你 $9 的出口流量费。在 R2 上,下载一万次也是 $0 出口费。

定价: 存储 $0.015/GB/月,写操作 $4.5/百万次,读操作 $0.36/百万次,出口免费

免费额度:10GB 存储 + 100 万次 A 类操作 + 1000 万次 B 类操作/月。

用法:

// Worker 中操作 R2
const bucket = env.MY_BUCKET;
await bucket.put("file.txt", "Hello R2!");
const obj = await bucket.get("file.txt");
const text = await obj.text();

也可以直接通过 wrangler 命令行操作:

npx wrangler r2 object put my-bucket/avatar.png --file=./avatar.png

R2 还支持自定义域名和公开访问,可以当图床用。

KV — 键值存储

极快的读取(全球边缘缓存),适合存储不常变动的数据。最终一致性,不适合需要强一致的场景。

用法场景: 配置项、短链接映射、用户 session、缓存层。

await env.MY_KV.put("user:123", JSON.stringify({ name: "Jask" }));
const user = await env.MY_KV.get("user:123", "json");

定价: 免费版 1GB 存储 + 10 万次读/天。付费的话读 $0.50/百万次,很便宜。

D1 — SQLite 数据库

Cloudflare 的 SQLite 数据库,跑在边缘。完整的 SQL 支持,JOIN、事务、外键全都有。

如果你需要关系型数据、复杂查询,就用 D1。

const { results } = await env.DB.prepare(
  "SELECT * FROM posts WHERE author = ? ORDER BY created_at DESC LIMIT 10"
).bind("jask").all();

定价: 免费版 5GB 存储 + 500 万行读/天。对中小型应用来说绰绰有余。

Durable Objects — 有状态的边缘计算

最硬核的一个。Workers 默认是无状态的,但 Durable Objects 给你一个有状态的、单线程的、强一致的运行时。适合做:实时协作、聊天室、WebSocket 长连接、限流计数器。

这个比较进阶,新手可以跳过,等你真的需要”全局唯一的有状态实例”时再来。


第七层:Zero Trust — 你的私人 VPN 替代品

这个功能很多人不知道,但一旦用了就回不去。

Cloudflare Zero Trust(免费 50 用户名额) 可以让你:

1. 安全访问你的内部服务

你有台家里的 NAS、或者一个 admin 面板不想暴露到公网?以前你得搭 VPN。现在:

  • 装 Cloudflare WARP 客户端
  • 在 Zero Trust 面板配置 Access Policy(比如”只有我的邮箱才能访问 nas.example.com”)
  • 访问 nas.example.com 时,Cloudflare 会弹一个登录页,验证通过后才能进

不需要开放任何端口,不需要 VPN 服务器。

2. WARP 客户端 — 比商业 VPN 更安全

WARP 不是传统意义上的 VPN,它的设计目标不同:

  • 它不隐藏你的 IP(如果你需要翻墙它不管用)
  • 它加密你的 DNS 查询和流量(防止运营商劫持/窃听)
  • 它可以配合 Gateway 做 DNS 过滤(拦截恶意域名、广告等)

日常使用开了 WARP 之后,运营商就看不到你访问什么网站了。

3. Tunnel — 反向代理的终极形态

cloudflared tunnel 让你不需要开放任何入站端口,就能把本地服务暴露到公网。

# 安装 cloudflared
brew install cloudflared

# 创建隧道
cloudflared tunnel create my-tunnel

# 把本地的 8080 端口暴露到 dashboard.example.com
cloudflared tunnel route dns my-tunnel dashboard.example.com

# 运行
cloudflared tunnel run --url http://localhost:8080 my-tunnel

你的服务器没有开放任何端口,Cloudflare 主动连过来拉取流量。比 ngrok 安全得多,而且免费。


第八层:那些你可能没注意到的宝藏功能

Email Routing

Cloudflare 可以免费给你的域名做邮件转发。hi@yourdomain.com 自动转发到你的 Gmail。不用买邮箱服务,不用配 MX 记录,几秒钟搞定。

Turnstile

reCAPTCHA 的替代品。不需要用户点红绿灯选消防车,后台静默验证,用户体验好得多。免费无限次使用。

Images

图床服务。$5/月起,包含 100GB 存储和无限流量。自动适配尺寸、格式转换。比 Cloudinary 便宜。

Stream

视频托管 + 转码 + 播放器。按量付费,没有 YouTube 的广告和推荐。适合付费课程、产品演示。

WARP + Gateway

DNS 级别的广告拦截和恶意网站防护。在 Gateway 里配置策略,WARP 客户端上自动生效。整个设备的所有 App 都受保护,不只是浏览器。

Zaraz

第三方脚本管理器。替代 Google Tag Manager,但在 Cloudflare 边缘执行,比 GTM 快得多。

Browser Rendering

在 Workers 里跑无头浏览器。爬虫、截图、PDF 生成。比自己搭 Puppeteer 集群省太多了。


“入土”:当 Cloudflare 变成你的基础设施

到这里你可能会问:全搬到 Cloudflare 上,会不会有供应商锁定(Vendor Lock-in)的风险?

说实话,会。

R2 虽然兼容 S3 API,但 Workers 的运行时、KV 的数据模型、D1 的 SQL 方言——这些都是 Cloudflare 特有的。一旦你把整个系统架构在上面,迁移成本会很高。

但我还是选择了全押。原因很简单:

它真的太好用了。

  • 免费额度对个人开发者来说几乎用不完
  • 全球边缘网络让你的服务天生就是低延迟的
  • 一个账号管理 DNS + CDN + 安全 + 计算 + 存储 + 邮件,省了至少 5 个平台的月费
  • 文档质量高,API 设计一致,开发体验统一
  • 功能迭代速度快,几乎每个月都有新东西

但也有几个坑你要知道:

  1. Workers 的 CPU 时间是”执行时间”不是”墙钟时间”——如果你 await fetch() 等了 2 秒,那 2 秒不算 CPU 时间。但如果你的代码做了密集计算,免费版的 10ms 限制会卡住你。

  2. KV 是最终一致性的——写入一个 key 后,全球传播可能需要几十秒到几分钟。不要拿 KV 做需要强一致的场景(比如扣款)。

  3. D1 目前还是 Beta——性能和稳定性在持续改善,但不要拿它跑生产环境的核心交易系统。

  4. 国内访问速度不稳定——Cloudflare 在中国大陆没有节点(除非你买 Enterprise + ICP 备案)。如果你的用户主要在国内,延迟可能比阿里云/腾讯云的 CDN 高。

  5. 不要把所有鸡蛋放一个篮子里——Cloudflare 本身也有过全球宕机的事故。关键业务做好备份和降级方案。


第九层:AI 与 MCP — 未来已经在边缘了

如果你觉得前面的内容已经够多了,先别走。Cloudflare 在 AI 这条线上也布局得非常深,而且上手成本极低

Workers AI — 在边缘跑大模型

你不需要买 GPU、不需要调 PyTorch、不需要部署推理服务器。直接在 Worker 里写一行代码就能调用大模型:

const response = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
  messages: [{ role: "user", content: "用一句话解释什么是 CDN" }],
});

模型跑在 Cloudflare 的 GPU 节点上,请求自动路由到最近的节点。支持 Llama、Mistral、Qwen 等开源模型,还有文本生成图片、语音识别、翻译等小模型。

免费额度:每天 10,000 次神经元推理。 个人项目随便用。

Remote MCP Server — 行业首创

MCP(Model Context Protocol)是 Anthropic 提出的开放协议,让 AI 助手能连接外部工具和数据。以前 MCP Server 只能本地跑,Cloudflare 是业界第一个支持远程 MCP Server 的平台

这意味着什么?你的 AI 客户端(Claude、ChatGPT 等)可以直接通过 URL 连到你部署在 Workers 上的 MCP Server,不需要本地安装任何东西。

部署一个 MCP Server 只需要:

npx create-cloudflare@latest my-mcp-server
# 选择 "Remote MCP Server" 模板
cd my-mcp-server
npx wrangler deploy

30 秒,你的 MCP Server 就上线了,带认证、带全球边缘加速。

拿到 URL 后,直接粘贴到 Claude Desktop / Cursor / AI Playground 就能用。比传统本地 MCP 省太多了——不用配环境、不用担心端口、不用手动启动进程。

Code Mode — 一个 MCP 暴露整个 Cloudflare API

这是最酷的。Cloudflare 发布了一个 MCP Server,用两个工具(search()execute())就暴露了整个 Cloudflare API——从 DNS 到 Workers 到 R2 到 Zero Trust。

AI 助手可以直接帮你管理你的 Cloudflare 资源。比如你对 Claude 说”帮我给 jask.dev 加一条 CNAME 记录”,它就真的能做。整个 MCP 只消耗约 1000 tokens 的上下文,效率极高。

上手资源

如果你想快速体验,这些链接收藏好:

说真的,我在 AI Agent 这块试过不少平台,Cloudflare 的开发体验是目前最好的之一。文档清晰、模板齐全、免费额度慷慨,从零到跑通一个 AI 工具,可能就半小时的事。


最后

我从 2024 年开始用 Cloudflare,从改个 DNS 到现在 Workers + R2 + KV + D1 + Pages + Zero Trust + Tunnel 全套,中间踩了不少坑,但也省了大量的服务器费用和运维时间。

这篇文章不能替代官方文档——Cloudflare 的文档写得很好,遇到具体问题还是去查。但它可以给你一张地图,让你知道这个平台能做什么,哪些功能值得花时间学,哪些可以先跳过。

从 DNS 开始,一路走到边缘计算,这就是 Cloudflare 的全部魅力。

如果你也在用 Cloudflare,或者准备开始用,欢迎来聊聊你的用法。这个平台的深度远超大多数人的想象。

至少对我来说,“入土”不是贬义——是因为你一旦用了,就再也爬不出来了。

需要建站或智能合约审计?

我提供个人网站、Web3 dApp 开发和智能合约审计服务。欢迎聊聊。