Cloudflare 近期更新盘点:Workers、R2、D1、Tunnel 常用命令一次整理
Cloudflare 最新更新内容汇总|附完整命令
Cloudflare 近年来的产品更新非常密集,从传统的 CDN、DNS、防护能力,逐步扩展到开发者平台、安全访问、边缘计算、AI 网关、对象存储、数据库、零信任网络等多个方向。对于站长、开发者、运维工程师来说,Cloudflare 已经不只是“套一层 CDN”的工具,而是一个覆盖网站性能优化、网络安全、Serverless 应用开发、全球边缘部署和企业访问控制的综合平台。
本文将围绕 Cloudflare 近期较重要的更新方向进行汇总,并附上常用完整命令,方便你快速上手 Workers、Pages、R2、D1、KV、Queues、Tunnel、Zero Trust、WARP 等功能。
说明:Cloudflare 更新频率较高,不同账号、区域和套餐可用功能可能略有差异。实际使用时建议同时参考 Cloudflare 官方文档和控制台提示。
一、Cloudflare 更新重点概览
Cloudflare 的最新更新主要集中在以下几个方向:
-
Workers 开发者平台增强
- Wrangler CLI 持续更新;
- Workers 支持更完善的本地开发、环境变量、Secrets、部署管理;
- 支持与 KV、D1、R2、Queues、Durable Objects 等服务深度集成。
-
Pages 与全栈部署能力增强
- Cloudflare Pages 不再只是静态站点托管;
- Pages Functions 支持边缘函数;
- 可与 GitHub、GitLab 连接,实现自动构建和部署。
-
R2 对象存储持续完善
- R2 主打无出口流量费;
- 适合图床、备份、静态资源、音视频资源分发;
- 支持 S3 兼容 API,方便迁移。
-
D1 数据库逐渐成熟
- D1 是 Cloudflare 的 Serverless SQL 数据库;
- 基于 SQLite,适合轻量应用、博客系统、API 服务;
- 可与 Workers 快速绑定使用。
-
Cloudflare Tunnel 更易用
- 无需公网 IP;
- 可以把本地服务、安全内网服务暴露到公网;
- 适合家庭服务器、NAS、内网管理面板、开发测试环境。
-
Zero Trust 与 WARP 安全能力增强
- Zero Trust 提供身份验证、访问策略、应用隔离;
- WARP 可用于安全代理、企业设备接入和网络优化;
- 适合远程办公、企业内网访问保护。
-
AI Gateway 和 Workers AI
- Cloudflare 开始强化 AI 基础设施;
- AI Gateway 可统一管理 AI API 请求;
- Workers AI 可在边缘调用模型能力。
二、Wrangler CLI:Cloudflare 开发者必备工具
Wrangler 是 Cloudflare 官方命令行工具,用于创建、开发、测试和部署 Workers、Pages、D1、R2、KV 等项目。
1. 安装 Node.js
建议使用较新的 Node.js LTS 版本。
node -v
npm -v
如果未安装 Node.js,可以前往官网下载:
https://nodejs.org/
也可以使用 nvm 安装:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
node -v
npm -v
2. 安装 Wrangler
npm install -g wrangler
检查版本:
wrangler --version
3. 登录 Cloudflare
wrangler login
执行后会打开浏览器,授权 Wrangler 访问你的 Cloudflare 账号。
查看当前登录用户:
wrangler whoami
三、Cloudflare Workers 更新与常用命令
Cloudflare Workers 是运行在 Cloudflare 全球边缘网络上的 Serverless 计算平台。它适合部署 API、代理服务、鉴权逻辑、边缘缓存逻辑、轻量后端等。
1. 创建 Workers 项目
npm create cloudflare@latest my-worker
进入项目目录:
cd my-worker
启动本地开发:
npm run dev
或者:
wrangler dev
2. 部署 Workers
wrangler deploy
部署成功后,Cloudflare 会返回一个类似下面的地址:
https://my-worker.username.workers.dev
3. 查看项目配置
通常 Workers 项目会有一个 wrangler.toml 或 wrangler.jsonc 配置文件。
示例:
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-06-01"
如果你使用 TypeScript,可以在 src/index.ts 中编写:
export default {
async fetch(request: Request): Promise {
return new Response("Hello Cloudflare Workers!");
},
};
4. 设置环境变量
普通变量可以写入配置文件:
[vars]
API_BASE_URL = "https://api.example.com"
在 Workers 中读取:
export interface Env {
API_BASE_URL: string;
}
export default {
async fetch(request: Request, env: Env): Promise {
return new Response(env.API_BASE_URL);
},
};
5. 设置 Secrets
敏感信息不要写入配置文件,应使用 Secret。
wrangler secret put API_TOKEN
查看 Secret 列表:
wrangler secret list
删除 Secret:
wrangler secret delete API_TOKEN
四、Cloudflare Pages:静态站点与全栈应用部署
Cloudflare Pages 适合部署博客、文档站、前端应用,也支持 Pages Functions 实现服务端逻辑。
常见框架包括:
- Vue / Vite
- React / Next.js
- Astro
- Nuxt
- Hugo
- Hexo
- Docusaurus
1. 创建 Vite 项目
npm create vite@latest my-pages-app
cd my-pages-app
npm install
npm run dev
2. 构建项目
npm run build
一般构建目录是:
dist
3. 使用 Wrangler 部署 Pages
wrangler pages project create my-pages-app
部署:
wrangler pages deploy dist --project-name=my-pages-app
4. 连接 Git 仓库自动部署
如果你想通过 GitHub 或 GitLab 自动部署,可以在 Cloudflare 控制台操作:
Cloudflare Dashboard
→ Workers & Pages
→ Create application
→ Pages
→ Connect to Git
→ 选择仓库
→ 设置构建命令和输出目录
常见构建配置:
Build command: npm run build
Build output directory: dist
Next.js、Nuxt、Astro 等框架可能需要根据官方适配器进行调整。
五、R2 对象存储:无出口流量费的存储方案
Cloudflare R2 是对象存储服务,最大特点是取消传统对象存储中常见的出口流量费用,非常适合存储图片、附件、静态资源和备份文件。
1. 创建 R2 Bucket
wrangler r2 bucket create my-bucket
查看 Bucket 列表:
wrangler r2 bucket list
删除 Bucket:
wrangler r2 bucket delete my-bucket
2. 上传文件到 R2
wrangler r2 object put my-bucket/test.txt --file ./test.txt
查看对象:
wrangler r2 object get my-bucket/test.txt
删除对象:
wrangler r2 object delete my-bucket/test.txt
3. Workers 绑定 R2
在 wrangler.toml 中添加:
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-bucket"
Workers 示例代码:
export interface Env {
MY_BUCKET: R2Bucket;
}
export default {
async fetch(request: Request, env: Env): Promise {
const url = new URL(request.url);
const key = url.pathname.slice(1);
if (!key) {
return new Response("Missing object key", { status: 400 });
}
const object = await env.MY_BUCKET.get(key);
if (!object) {
return new Response("Object not found", { status: 404 });
}
return new Response(object.body, {
headers: {
"Content-Type": object.httpMetadata?.contentType || "application/octet-stream",
},
});
},
};
部署:
wrangler deploy
六、D1 数据库:Cloudflare Serverless SQL
D1 是 Cloudflare 提供的 Serverless SQL 数据库,适合轻量级应用、用户系统、配置系统、评论系统、博客后台等场景。
1. 创建 D1 数据库
wrangler d1 create my-database
创建后会输出类似配置:
[[d1_databases]]
binding = "DB"
database_name = "my-database"
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
将其添加到 wrangler.toml。
2. 创建数据表
新建 SQL 文件:
mkdir migrations
touch migrations/0001_create_users.sql
写入 SQL:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
);
执行本地数据库迁移:
wrangler d1 execute my-database --local --file=./migrations/0001_create_users.sql
执行远程数据库迁移:
wrangler d1 execute my-database --remote --file=./migrations/0001_create_users.sql
3. 插入数据
wrangler d1 execute my-database --remote --command="INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');"
查询数据:
wrangler d1 execute my-database --remote --command="SELECT * FROM users;"
4. Workers 绑定 D1
[[d1_databases]]
binding = "DB"
database_name = "my-database"
database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
示例代码:
export interface Env {
DB: D1Database;
}
export default {
async fetch(request: Request, env: Env): Promise {
const result = await env.DB.prepare("SELECT * FROM users").all();
return new Response(JSON.stringify(result), {
headers: {
"Content-Type": "application/json",
},
});
},
};
七、KV:适合配置和缓存的键值存储
Cloudflare KV 是全球分布式键值存储,适合保存配置、缓存数据、短文本、开关状态等。
1. 创建 KV Namespace
wrangler kv namespace create MY_KV
创建预览环境 KV:
wrangler kv namespace create MY_KV --preview
配置示例:
[[kv_namespaces]]
binding = "MY_KV"
id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
preview_id = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
2. 写入 KV
wrangler kv key put --binding=MY_KV site_name "My Cloudflare Site"
读取 KV:
wrangler kv key get --binding=MY_KV site_name
删除 KV:
wrangler kv key delete --binding=MY_KV site_name
列出 Key:
wrangler kv key list --binding=MY_KV
3. Workers 中读取 KV
export interface Env {
MY_KV: KVNamespace;
}
export default {
async fetch(request: Request, env: Env): Promise {
const siteName = await env.MY_KV.get("site_name");
return new Response(siteName || "No value found");
},
};
八、Queues:异步任务队列
Cloudflare Queues 适合处理异步任务,例如发送邮件、日志处理、订单处理、图片处理、Webhook 重试等。
1. 创建队列
wrangler queues create my-queue
查看队列:
wrangler queues list
删除队列:
wrangler queues delete my-queue
2. 配置生产者和消费者
wrangler.toml 示例:
[[queues.producers]]
binding = "MY_QUEUE"
queue = "my-queue"
[[queues.consumers]]
queue = "my-queue"
3. Workers 示例
export interface Env {
MY_QUEUE: Queue;
}
export default {
async fetch(request: Request, env: Env): Promise {
await env.MY_QUEUE.send({
type: "email",
to: "user@example.com",
subject: "Welcome",
});
return new Response("Message sent to queue");
},
async queue(batch: MessageBatch, env: Env): Promise {
for (const message of batch.messages) {
console.log("Processing message:", message.body);
message.ack();
}
},
};
部署:
wrangler deploy
九、Cloudflare Tunnel:无公网 IP 暴露本地服务
Cloudflare Tunnel 是很多个人站长和企业内网用户非常喜欢的功能。它可以让你在没有公网 IP、不开放防火墙端口的情况下,把本地服务安全地暴露到公网。
1. 安装 cloudflared
macOS:
brew install cloudflare/cloudflare/cloudflared
Debian / Ubuntu:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
CentOS / RHEL:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm -o cloudflared.rpm
sudo rpm -i cloudflared.rpm
检查版本:
cloudflared --version
2. 登录 Cloudflare
cloudflared tunnel login
3. 创建 Tunnel
cloudflared tunnel create my-tunnel
查看 Tunnel:
cloudflared tunnel list
4. 配置 Tunnel
创建配置目录:
mkdir -p ~/.cloudflared
编辑配置文件:
nano ~/.cloudflared/config.yml
示例配置:
tunnel: my-tunnel
credentials-file: /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
ingress:
- hostname: app.example.com
service: http://localhost:3000
- hostname: ssh.example.com
service: ssh://localhost:22
- service: http_status:404
5. 绑定 DNS
cloudflared tunnel route dns my-tunnel app.example.com
如果还要绑定 SSH:
cloudflared tunnel route dns my-tunnel ssh.example.com
6. 启动 Tunnel
cloudflared tunnel run my-tunnel
7. 安装为系统服务
Linux:
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
sudo systemctl status cloudflared
查看日志:
journalctl -u cloudflared -f
十、Zero Trust:保护内网应用和远程访问
Cloudflare Zero Trust 可以为你的内部服务增加身份认证和访问策略。例如,你可以让 admin.example.com 只有指定邮箱、指定组织成员或通过 SSO 的用户才能访问。
1. 基本使用流程
Cloudflare Dashboard
→ Zero Trust
→ Access
→ Applications
→ Add an application
→ Self-hosted
→ 填写应用域名
→ 设置访问策略
2. 常见策略
可以配置:
- 指定邮箱访问;
- 指定邮箱域名访问;
- Google Workspace 登录;
- GitHub 组织登录;
- Okta / Azure AD / SAML 登录;
- 指定国家或地区;
- 指定设备状态;
- 多因素认证。
示例策略:
Allow
Emails ending in: example.com
Require MFA: enabled
这类配置很适合保护:
- 后台管理系统;
- NAS 管理页面;
- 内部 Git 服务;
- 内部监控面板;
- 数据库管理工具;
- 临时测试环境。
十一、WARP:客户端安全接入
Cloudflare WARP 是一个客户端网络工具,可以用于个人网络加速、隐私保护,也可以结合 Zero Trust 做企业设备接入。
1. Linux 安装 WARP
Ubuntu / Debian 示例:
curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
sudo apt update
sudo apt install cloudflare-warp
2. 注册并连接
warp-cli registration new
warp-cli connect
查看状态:
warp-cli status
断开连接:
warp-cli disconnect
设置模式:
warp-cli mode warp
或使用代理模式:
warp-cli mode proxy
查看设置:
warp-cli settings
十二、缓存与安全规则更新
Cloudflare 的缓存和安全规则也一直在优化。新控制台中,越来越多配置被整合到 Rules 体系中,例如:
- Cache Rules;
- Configuration Rules;
- Transform Rules;
- Redirect Rules;
- Origin Rules;
- WAF Custom Rules。
这些规则比旧版 Page Rules 更灵活,适合按路径、主机名、请求头、国家地区、Cookie 等条件精细化控制。
1. 常见缓存策略
例如,对于静态资源:
条件:
URI Path ends with .js
或 .css
或 .png
或 .jpg
或 .webp
动作:
Cache eligibility: Eligible for cache
Edge TTL: 1 month
Browser TTL: 1 month
对于 API:
条件:
URI Path starts with /api
动作:
Bypass cache
2. 常见安全策略
例如阻止特定国家访问后台:
条件:
URI Path starts with /admin
AND Country is not your allowed country
动作:
Block
限制异常 User-Agent:
条件:
User-Agent contains suspicious-bot
动作:
Managed Challenge
十三、常用 Cloudflare API 命令
如果你希望通过命令行调用 Cloudflare API,可以使用 curl。
1. 设置变量
export CF_API_TOKEN="你的Cloudflare API Token"
export CF_ZONE_ID="你的Zone ID"
export CF_ACCOUNT_ID="你的Account ID"
2. 查询域名 Zone 信息
curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json"
3. 清理全部缓存
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'
4. 清理指定 URL 缓存
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"files":["https://example.com/style.css","https://example.com/app.js"]}'
5. 查询 DNS 记录
curl -X GET "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json"
6. 添加 A 记录
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"type": "A",
"name": "www",
"content": "1.2.3.4",
"ttl": 1,
"proxied": true
}'
7. 添加 CNAME 记录
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
-H "Authorization: Bearer $CF_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"type": "CNAME",
"name": "app",
"content": "example.pages.dev",
"ttl": 1,
"proxied": true
}'
十四、实用部署组合推荐
1. 个人博客方案
推荐组合:
Cloudflare Pages + 自定义域名 + Cache Rules + Web Analytics
适合:
- Hexo;
- Hugo;
- Astro;
- VitePress;
- Docusaurus。
常用命令:
npm run build
wrangler pages deploy dist --project-name=my-blog
2. 图床与静态资源方案
推荐组合:
R2 + Workers + 自定义域名 + Cache Rules
适合:
- 图片托管;
- 文件下载;
- 静态资源分发;
- 备份资源公开访问。
3. 轻量后端 API 方案
推荐组合:
Workers + D1 + KV + Queues
适合:
- 用户系统;
- 表单提交;
- 评论系统;
- Webhook;
- 轻量 CMS。
部署命令:
wrangler deploy
4. 内网穿透方案
推荐组合:
Cloudflare Tunnel + Zero Trust Access
适合:
- 家庭 NAS;
- 内网服务;
- 公司后台;
- 测试环境;
- 远程 SSH。
启动命令:
cloudflared tunnel run my-tunnel
十五、使用 Cloudflare 的注意事项
虽然 Cloudflare 功能强大,但实际使用时仍需要注意以下几点:
-
不要把敏感密钥写进代码仓库
应使用wrangler secret put或 Cloudflare 控制台中的环境变量功能。 -
缓存规则要谨慎配置
API、后台页面、用户隐私页面不应随意缓存,否则可能导致数据泄露或用户看到错误内容。 -
R2 公开访问需要做好权限控制
如果使用 Workers 代理 R2 文件,应判断哪些文件允许公开访问。 -
Tunnel 不等于绝对安全
Tunnel 只是安全暴露服务的一部分,建议配合 Zero Trust Access、MFA、访问策略使用。 -
Workers 有运行限制
不同套餐在 CPU 时间、请求量、子请求数、内存等方面可能不同,大型后端服务需要提前评估。 -
API Token 权限要最小化
创建 API Token 时只授予必要权限,避免使用全局 API Key。
十六、总结
Cloudflare 的最新更新方向非常明确:它正在从 CDN 和安全防护平台,逐步演进为一个完整的边缘云平台。对于普通站长,它可以提供 DNS、CDN、防 DDoS、缓存优化和 Pages 托管;对于开发者,它提供 Workers、D1、KV、R2、Queues 等 Serverless 能力;对于企业,它提供 Zero Trust、WARP、Access、Gateway、Tunnel 等安全访问方案。
如果你只是部署一个静态站点,可以从 Cloudflare Pages 开始;如果你需要对象存储,可以使用 R2;如果你要开发轻量 API,可以选择 Workers + D1;如果你想把内网服务安全暴露到公网,可以使用 Cloudflare Tunnel + Zero Trust。
总体来看,Cloudflare 的优势在于:
- 全球边缘网络覆盖广;
- 入门成本低;
- 开发者工具完善;
- 与 DNS、CDN、安全能力天然集成;
- Serverless 生态越来越完整。
对于希望降低服务器维护成本、提升访问速度、增强安全能力的个人和团队来说,Cloudflare 已经是一个非常值得长期关注和使用的平台。上文列出的命令基本覆盖了日常使用中的核心场景,你可以根据自己的业务需求组合使用,逐步搭建属于自己的边缘应用架构。