← 返回首页

Cloudflare 全栈部署指南:从 DNS 到 Workers 到 R2

> 一个账号搞定 DNS、CDN、无服务器函数、对象存储——而且免费额度够个人项目用。

---

Cloudflare 能做什么?

产品用途免费额度
DNS域名解析无限查询
CDN全球加速无限流量
Pages静态网站托管无限站点,500 次构建/月
Workers无服务器函数每天 10 万次请求
R2对象存储(S3 替代)每月 1000 万次读 + 1000 万次写
D1托管 SQLite5GB 存储
KV键值存储100 万次读取/月
Images图片优化每月 1000 张转换

---

第一步:注册与域名

  • 访问 [cloudflare.com](https://cloudflare.com) 注册账号
  • 在 Dashboard → Websites → Add a Site
  • 输入你的域名(如 example.com
  • 选择免费计划(Free Plan)
  • Cloudflare 会给你两个 Nameservers,去域名注册商修改
  • ---

    第二步:部署静态网站(Pages)

    方法 A:Git 自动部署

  • 把代码推到 GitHub/GitLab
  • Cloudflare Pages → Create a project → Connect Git
  • 构建设置:
  • - Build command: npm run build - Build output: dist
  • 每次 push 自动部署
  • 方法 B:直接上传

    ``bash

    使用 Wrangler CLI

    npm install -g wrangler wrangler pages project create my-site wrangler pages deployment publish ./dist `

    ---

    第三步:部署无服务器函数(Workers)

    Hello World

    `javascript // src/index.js export default { async fetch(request, env, ctx) { return new Response('Hello from Cloudflare Workers!'); } }; `

    `bash wrangler deploy `

    实战:API 代理

    `javascript export default { async fetch(request) { const url = new URL(request.url); const target = url.searchParams.get('url'); if (!target) { return new Response('Missing url parameter', { status: 400 }); } const resp = await fetch(target); return new Response(resp.body, { headers: { 'Access-Control-Allow-Origin': '*' } }); } }; `

    用途:解决前端跨域问题、缓存第三方 API

    ---

    第四步:对象存储(R2)

    上传文件

    `bash

    创建 bucket

    wrangler r2 bucket create my-bucket

    上传文件

    wrangler r2 object put my-bucket/file.txt --file ./local-file.txt
    `

    Workers 访问 R2

    `javascript export default { async fetch(request, env) { const bucket = env.MY_BUCKET; const obj = await bucket.get('file.txt'); return new Response(obj.body, { headers: { 'Content-Type': 'text/plain' } }); } }; `

    ---

    第五步:图片优化(Images)

    `bash

    通过 API 转换

    curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1?url=https://example.com/image.png&format=webp&width=800" `

    ---

    最佳实践

  • DNS 优先:把域名 NS 改成 Cloudflare,免费 CDN + DDoS 防护
  • 静态站用 Pages:比 Workers 更便宜,自动全球 CDN
  • API 用 Workers:免费额度够个人项目,按量付费不怕超支
  • 大文件存 R2:比 AWS S3 便宜(无出口流量费)
  • 图片用 Images:自动 WebP/AVIF 转换,省带宽
  • ---

    避坑指南

  • 免费版有速率限制:Workers 每天 10 万请求,超出付费
  • R2 没有文件夹:用前缀模拟(如 path/to/file.txt`)
  • D1 还在 beta:生产环境建议用 Supabase/Neon
  • Pages 构建时间有限:大型项目考虑本地构建后上传
  • ---

    下一步

  • 如果你刚接触 VPS,先看《自部署指南:从购买 VPS 到上线》
  • 如果你需要域名,看《域名投资入门》
  • 如果你想优化工作流,看《如何建立你的个人 AI 工具栈》