对于个人开发者或小流量项目,使用 Cloudflare Workers 代替传统 VPS 反向代理能显著降低运维成本和资金投入,但在高流量或复杂协议场景下,传统服务器方案依然更具可控性。
先说结论:Cloudflare Workers 适合零运维需求的中小规模中转场景,传统 VPS 适合需要完全掌控网络环境的高流量业务。
- 适合:个人项目、API 中转、静态资源加速及日均请求量在免费额度内的场景
- 重点看:免费配额限制、边缘节点延迟差异以及自定义域名的配置成本
- 别忽略:超出免费额度后的计费规则、部分协议不支持、供应商锁定风险及合规性要求
成本测算参考
成本差异主要源于架构模式。传统反向代理(如 Nginx)需要租用 VPS,涉及服务器租赁费、带宽费及维护时间成本。Cloudflare Workers 采用按请求计费的 Serverless 模式。
1. 传统 VPS 方案
入门级 VPS 月费通常在 5 美元左右,包含固定带宽和 IP。适合流量稳定且较大的场景,但存在单点故障风险。
2. Workers 方案
免费套餐每日提供 10 万次请求额度,对于小型项目可实现零成本运维。超出免费额度后,付费计划约为每 100 万次请求 0.30 美元。若日均请求超过 300 万次,成本可能超过基础 VPS。
核心代码实现
以下是一个基础的请求转发 Worker 代码示例,支持方法、Header 及 Body 透传。请将代码粘贴至 Worker 编辑器中。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
const target = url.searchParams.get('target')
if (!target) {
return new Response('Missing target parameter', { status: 400 })
}
// 简单的安全检查,避免开放代理被滥用
if (!target.startsWith('https://')) {
return new Response('Only HTTPS targets allowed', { status: 403 })
}
try {
const response = await fetch(target, {
method: request.method,
headers: request.headers,
body: request.body
})
return response
} catch (e) {
return new Response('Proxy error: ' + e.message, { status: 502 })
}
}验证步骤
部署完成后,使用 curl 命令验证转发链路是否通畅。以下命令测试访问 httpbin.org 的 JSON 接口:
curl -I "https://你的 Worker 域名.workers.dev/?target=https://httpbin.org/json"若返回状态码为 200 且包含目标站点内容,即表示转发成功。若返回 502 或 403,请检查代码逻辑或目标站点是否屏蔽 Cloudflare IP。
合规与风险
1. 服务条款合规
使用 Workers 做通用反向代理可能违反 Cloudflare 服务条款(ToS),尤其是用于 bypass 地理限制或大量滥用流量时。请确保用途合法合规。
2. 目标站限制
无需额外配置 SSL 证书,但需注意目标服务器可能屏蔽 Cloudflare IP 段。部分服务可能禁止来自云厂商 IP 段的访问,转发时需调整请求头。
3. 流量超额费用
虽然免费额度充足,但若业务量突增超出限制,会产生额外费用,需提前设置用量告警。