Cloudflare 已将所有旧版速率限制规则创建的规则升级为新版速率限制规则。
Cloudflare 仪表板现在将所有速率限制规则集中展示在同一列表中。
-
计费模型: 旧版速率限制按用量计费,并作为所有套餐的附加服务;新版纳入套餐内。Enterprise 套餐中,速率限制按总合同 HTTP 流量计费。新版规则保留了旧版全部能力,并新增若干特性。
-
高级作用域表达式: 旧版速率限制只能基于单一路径和方法进行范围匹配。新版允许像WAF 自定义规则一样编写规则,可组合多个 HTTP 请求参数。
-
计数器范围: 新版速率限制按数据中心分片计数,并始终将
cf.colo.id作为一个特征纳入。对于跨多个 Cloudflare 机房的流量,阈值可能表现不同。地理位置相同的数据中心会共享计数器。更多信息请参阅Cloudflare 如何判断请求速率。 -
独立的计数与缓解表达式: 在新版速率限制中(Business 与 Enterprise 版本),计数表达式与缓解表达式是分离的。计数表达式决定用于计算速率的请求,缓解表达式决定阈值达到后需要缓解哪些请求。通过分离表达式,您可以只对特定路径(如
/login)的请求计数,而当某个 IP 超过阈值后,再封禁该 IP 对您的域名发起的所有请求。 -
额外计数维度(高级速率限制专用): 与旧版一样,新版支持基于源 IP 的速率限制。除了基于 IP,新版面向订阅高级速率限制的客户可基于更多特征分组,如 API Key、cookie、会话标头、ASN、查询参数或指定的 JSON body 字段。可参考速率限制最佳实践。
-
每套餐规则数量: 除了具体功能差异外,不同版本在每套餐规则条数上也不同。请参阅速率限制规则查看新版配额:
产品 Free Pro Business 含 RL 附加项的 Enterprise,或同等级套餐 旧版速率限制 1 10 15 100 新版速率限制 1 2 5 100 Enterprise 客户需在合同中启用应用安全,才能使用速率限制规则。
关于升级后配额调整(如适用)的细节,请参阅下面的“关键升级说明”。
有关旧版与新版速率限制规则差异的更多信息,请参阅我们的官方博客文章 ↗。
- 升级后,如果您超出新版配额,将无法创建或编辑速率限制规则。 新版中每个套餐允许的规则数可能低于旧版。如果超出新版上限,您需要升级到可提供更多规则的套餐,或删除已有规则,直到数量不超过套餐上限。
- 自定义时长会四舍五入到最近的支持值。 自定义计数周期和自定义缓解超时时间都会按新版支持的范围自动向上或向下取整(参见可用性中的每套餐可用值)。例如,若旧规则设置了 55 秒缓解时长,系统会自动四舍五入为 1 分钟。升级后,Enterprise 客户可通过 API 配置自定义缓解时长。
- Business(及更高)套餐的客户将可使用 IP with NAT support 特征。 该特征用于处理 NAT 环境下多个客户端共享同一 IP 的场景。
- 已存在的“跳过旧版速率限制”自定义规则不会自动更新为跳过新版。 Cloudflare 不会将旧版速率限制中“跳过”选项(More components to skip(更多需跳过组件) > Rate limiting rules(速率限制规则) > Legacy(旧版))下的现有自定义规则自动迁移到新版。若您有使用 Skip(跳过) 动作的旧“跳过”规则(custom rules(自定义规则)),且需要排除新版速率限制,请手动更新为:WAF components to skip(WAF 需跳过组件) > All rate limiting rules(全部速率限制规则),以替代旧实现。
如果您此前使用过旧版 Cloudflare Rate Limiting,现在可在 Security(安全) > WAF > Rate limiting rules(速率限制规则) 中看到所有速率限制规则。
旧版创建的规则会在 Cloudflare 仪表板中标记为 Previous version(旧版)。
如果您使用新版应用安全仪表板,只有已升级到新版的速率限制规则会出现在 Security(安全) > Security rules(安全规则) 中。
若您在列表中编辑带有该标记的规则,将无法再使用旧版 API 或 Terraform 资源继续编辑;此时应切换到 Rulesets API 或 cloudflare_ruleset ↗ Terraform 资源。更多信息请参见 API 用户和 Terraform 用户的相关变更章节。
旧版 Rate Limiting API 已弃用。 该 API 自 2025-06-15 起不再受支持。您必须将基于旧版 Rate Limiting API的自动化迁移到 Rulesets API 以避免异常。
新版速率限制规则基于规则引擎。若要通过 API 配置这些规则,必须使用 Rulesets API。由于旧版规则在升级过程中已迁移到新版,接口返回时也会显示为新版规则。
Rulesets API 是唯一可在任意实现版本下创建、编辑和删除速率限制规则的 API。旧版 Rate Limiting API 仅适用于您未在仪表板或新版 API / Terraform 资源中编辑过的旧版规则。
在 API 下线日期前,您仍可用旧版 Rate Limiting API 管理那些在旧版创建后被升级过来的规则;但如果您已经对某条旧版规则使用过 Rulesets API,或在仪表板中更改过其顺序与内容(包括规则顺序),该规则将不能再通过旧版 API 操作。此类规则必须完全改为使用 Rulesets API 管理。
cloudflare_rate_limit Terraform 资源已弃用。 该资源自 2025-06-15 起不再支持。您必须手动将 Terraform 配置从 cloudflare_rate_limit ↗ 迁移为 cloudflare_ruleset ↗ 资源。
新版速率限制基于规则引擎。若使用 Terraform 配置这些规则,必须使用 cloudflare_ruleset 资源。
cloudflare_ruleset ↗ 是唯一可在任意实现版本下创建、编辑和删除速率限制规则的 Terraform 资源。cloudflare_rate_limit 仅能管理在旧版创建且未在仪表板或新 API/Terraform 资源编辑过的规则(这些规则在升级后会变为新版)。
在 cloudflare_rate_limit 下线前,您仍可使用该资源管理旧版规则;但一旦使用 cloudflare_ruleset 管理某条旧版规则,或在仪表板中修改其顺序/内容,该规则就不能再回到旧版 Terraform 资源进行管理,必须改用 cloudflare_ruleset。
有关使用 Terraform 配置新版速率限制的示例,请参见相关 Terraform 文档。
您可以使用 cf-terraforming ↗ 工具生成旧版速率限制规则对应的新 Terraform 配置,并将新资源导入到 Terraform 状态。
将旧版 Terraform 配置替换为新版规则集配置的推荐步骤如下:
-
运行以下命令,为指定区域生成所有 ruleset 配置:
cf-terraforming generate --zone <ZONE_ID> --resource-type "cloudflare_ruleset"resource "cloudflare_ruleset" "terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31" { kind = "zone" name = "default" phase = "http_ratelimit" zone_id = "<ZONE_ID>" rules { # (...) } # (...) } # (...) -
该命令可能会返回其他同样基于规则引擎的规则集配置。只保留
http_ratelimit阶段的cloudflare_ruleset资源,并将其保存为.tf配置文件。下一步您需要用到完整的资源名。 -
使用
terraform import命令导入您刚确定的cloudflare_ruleset资源。例如:terraform import cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31 zone/<ZONE_ID>/3c0b456bc2aa443089c5f40f45f51b31cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31:正在从 ID "zone/<ZONE_ID>/3c0b456bc2aa443089c5f40f45f51b31" 导入... cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31:导入已准备! 已为导入准备 cloudflare_ruleset cloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31:正在刷新状态... [id=3c0b456bc2aa443089c5f40f45f51b31] 导入成功! 上述内容是已导入的资源,这些资源已进入 Terraform state,并由 Terraform 进行管理。 -
运行
terraform plan,验证 Terraform 中该cloudflare_ruleset资源及其他既有资源状态。例如:terraform plancloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31:正在刷新状态... [id=3c0b456bc2aa443089c5f40f45f51b31] [...] cloudflare_rate_limit.my_rate_limiting_rules:正在刷新状态... [id=0580eb5d92e344ddb2374979f74c3ddf] [...] -
删除所有通过旧
cloudflare_rate_limit资源配置的速率限制规则相关状态:-
运行以下命令,查找与速率限制规则相关的资源:
terraform state list | grep -E '^cloudflare_rate_limit\.'cloudflare_rate_limit.my_rate_limiting_rules -
先使用 dry-run 模式执行
terraform state rm ...,确认影响范围:terraform state rm -dry-run cloudflare_rate_limit.my_rate_limiting_rules将移除 cloudflare_rate_limit.my_rate_limiting_rules -
确认无误后,去掉
-dry-run执行正式删除:terraform state rm cloudflare_rate_limit.my_rate_limiting_rules已移除 cloudflare_rate_limit.my_rate_limiting_rules 已成功移除 1 个资源实例。
-
-
从
.tf配置文件中删除所有旧cloudflare_rate_limit资源定义。 -
再次运行
terraform plan,确认已删除的资源不再出现。此时应无待处理变更。terraform plancloudflare_ruleset.terraform_managed_resource_3c0b456bc2aa443089c5f40f45f51b31:正在刷新状态... [id=3c0b456bc2aa443089c5f40f45f51b31] [...] 无变更。您的基础设施与配置一致。 Terraform 已将当前基础设施与配置进行对比,未发现差异,因此无需进行变更。
有关将 Cloudflare 资源导入 Terraform 以及使用 cf-terraforming 的更多信息,请参阅:
有关新版速率限制及各套餐可用能力的更多信息,请参阅速率限制规则。
Cloudflare 也提供面向 Enterprise 客户的高级速率限制版本,更多信息请参阅介绍高级速率限制 ↗。
若想进一步了解新版速率限制可实现的能力,请参阅速率限制最佳实践。