Skip to content
返回云服务

Cloudflare 限流规则

按 IP、路径、头或 ASN 边缘限流,滑动窗口和自定义动作。

Cloudflare入门

为什么

边缘限流在源前阻止滥用 — 保护登录、API 和昂贵端点。免费计划含 1 万规则,无需源代码。滑动窗口比固定窗口更准确。

何时使用

用于登录节流、API 配额、注册滥用防护和昂贵搜索端点。避免需 DB 状态的按用户限制(用 Durable Objects)。

如何做

1. 面板 — Security → WAF → Rate limiting rules → Create 2. 匹配 — URL 路径、HTTP 方法、头值、源 IP/ASN 3. 限制 — 请求数 / 周期(秒),滑动窗口 4. 动作 — block(429)、challenge(JS 检查)、log 或 managed_challenge 5. 持续 — 超阈值后拦截多久(如 600 秒) 6. 特征 — 按 IP、IP+路径或自定义(如 cf-IPcountry)计数 7. 部署 — 即时,应用到所有边缘位置

示例

# 限流:每 IP 每分钟 10 次登录尝试 resource "cloudflare_ruleset" "rl_login" { zone_id = var.zone_id name = "login-rate-limit" kind = "zone" phase = "http_ratelimit" rules { action = "block" ratelimit { characteristics = ["ip.src"] period = 60 requests_per_period = 10 mitigation_timeout = 600 } expression = "(http.request.uri.path eq "/login" and http.request.method eq "POST")" } } // Worker 端按用户限流,用 Durable Object export class RateLimiter implements DurableObject { async fetch(request: Request) { const now = Date.now(); const times = (await this.ctx.storage.get<number[]>("times") || []).filter(t => now - t < 60000); if (times.length >= 10) return new Response("太多", { status: 429 }); times.push(now); await this.ctx.storage.put("times", times); return new Response("OK"); } }

常见问题

  • ⚠NAT 后所有用户共享 IP — 移动/企业按头(X-User-Id)限流非 IP
  • ⚠滑动 vs 固定窗口 — 固定窗口边界允许 2 倍突发,用滑动
  • ⚠拦截持续太短 — 滥用者立即重试,登录设 600 秒+

最佳实践

  • ✓用 managed_challenge 而非 block — JS 检查过滤机器人,放行真实用户
  • ✓边缘 + 源分层限流 — 边缘按 IP,源(Durable Object)按用户
  • ✓监控 429 尖峰 — 突增可能攻击或客户端故障

常见问题解答

什么是Cloudflare 限流规则?它解决什么问题?

按 IP、路径、头或 ASN 边缘限流,滑动窗口和自定义动作。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手Cloudflare 限流规则?

两步即可跑通:① 面板 — Security → WAF → Rate limiting rules → Create;② 匹配 — URL 路径、HTTP 方法、头值、源 IP/ASN。建议先用免费套餐验证流程,再接入生产环境。

Cloudflare 限流规则 最容易踩的坑是什么?

最高频的问题是:NAT 后所有用户共享 IP — 移动/企业按头(X-User-Id)限流非 IP。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

Cloudflare 限流规则 的最佳实践有哪些?

Cloudflare 限流规则 的最佳实践包括:用 managed_challenge 而非 block — JS 检查过滤机器人,放行真实用户;边缘 + 源分层限流 — 边缘按 IP,源(Durable Object)按用户;监控 429 尖峰 — 突增可能攻击或客户端故障。其中首条「用 managed_challenge 而非 block — JS 检查过滤机器人,放行真实用户」应作为团队默认规范写入 IaC 模板。

Cloudflare 限流规则 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。Cloudflare 限流规则 多数提供免费套餐,先在免费额度内验证再放量。