Cloudflare 速率限制会自动识别并缓解针对特定 URL 或整个域名的过高请求速率。
请求速率会在各个 Cloudflare 数据中心本地计算。速率限制最常见的用途包括:
当单个 IPv4 地址或 IPv6 /64 地址段超过规则阈值后,后续对源站的请求将返回 HTTP 429 并被拦截。响应中会包含 Retry-After 头,告知客户端何时可继续发送请求。
(旧版)缓存资源和已知搜索引擎爬虫都会被排除在速率限制规则之外,因此不会影响您的网站SEO 排名。
可创建的速率限制规则数量取决于域名所属套餐:
| 套餐 | 规则 | 匹配响应标头的规则 | 动作 | 动作时长 | 请求周期 |
|---|---|---|---|---|---|
| Free | 1 | 1 | 拦截(Block) | 1 分钟或 1 小时 | 10 秒或 1 分钟 |
| Pro | 10 | 1 | 拦截(Block)、非交互式质询(Non-Interactive Challenge)、受管质询(Managed Challenge)、交互式质询(Interactive Challenge)、或记录(Log) | 1 分钟或 1 小时 | 10 秒或 1 分钟 |
| Business | 15 | 10 | 拦截(Block)、非交互式质询(Non-Interactive Challenge)、受管质询(Managed Challenge)、交互式质询(Interactive Challenge)、或记录(Log) | 1 分钟、1 小时或 24 小时 | 10 秒、1 分钟或 10 分钟 |
| Enterprise | 100 | 10 | 拦截(Block)、非交互式质询(Non-Interactive Challenge)、受管质询(Managed Challenge)、交互式质询(Interactive Challenge)、或记录(Log) | 10 秒到 86,400 秒(24 小时)内任意时长 | 10 秒到 3,600 秒(1 小时)内任意值 |
Cloudflare 速率限制提供分级配置权限,不同套餐可用功能不同。下表说明了基于套餐可用的配置能力:
| 顺序 | 任务 | 适用套餐 |
|---|---|---|
| 1 | 配置基础速率限制规则 | 所有套餐 |
| 2 | 配置高级筛选条件 | Business 和 Enterprise 套餐 |
| 3 | 配置高级响应 | Business 和 Enterprise 套餐 |
| 4 | 配置 Bypass 选项 | Enterprise 套餐 |
一个速率限制规则由三个独立组件组成:
入站请求可基于请求路径、请求方案、请求方法以及(可选)源站响应码进行匹配。
例如:
http://example.com/examplehttp://example.com/example/*
请求路径不区分大小写。模式无法匹配问号(?)或锚点(#)后的内容。星号(*)可匹配任意字符序列(包括空序列),例如:
*.example.com/*可匹配example.com的任意子域名下的任意路径。*example.com/example.html可匹配example.com或其任意子域名上的example.html。*可匹配您的站点中的任意页面。
example.com/path 与 example.com/path/ 不同。唯一例外是首页:example.com 匹配 example.com/。
可选 _HTTP_ 或 _HTTPS_。如未指定,则同时匹配两者,规则中将显示 __ALL__。
可选 _POST_ 或 _GET_。如未指定,则匹配全部方法,规则中将显示 __ALL__。
例如,仅在源站返回 HTTP 401 或 403 响应码时触发速率限制规则。若规则匹配到响应码条件,后续来自该客户端的请求将被拦截,且不再受源站响应码影响。
一条规则可按同一客户端在一定时间内的请求数量进行匹配。
请至少填写 2 个请求。若要对单次请求进行拦截,请让该路径不可访问,例如将源站配置为返回 HTTP 403 状态码。
当客户端请求在指定时段内超过阈值时,规则将被触发。
规则缓解动作由以下两部分组成:
- 缓解动作
- 封禁时长
速率限制动作依据套餐权限定义:
- Block(拦截):当超过阈值时,Cloudflare 返回
HTTP 429错误。 - Non-Interactive Challenge(非交互式质询):访问者需完成 Cloudflare 的非交互式质询,质询通过后放行请求。
- Managed Challenge(受管质询):访问者需完成 Cloudflare 基于请求特征动态下发的质询,质询通过后放行请求。
- Interactive Challenge(交互式质询):访问者需完成交互式质询,质询通过后放行请求。
- Log(记录):将请求记录到 Cloudflare Logs。用于在生产环境前测试规则。
质询动作的详细说明,请参见质询。
将封禁时长设置低于阈值时,系统会自动将时长提升到阈值。
当未配置自定义错误页时,命中速率限制的请求会显示默认 HTML 页面。Business 和 Enterprise 客户可在规则中直接配置返回内容。详情请参见配置高级响应。
可通过以下方式估算 Cloudflare 速率限制的通用阈值:取 24 小时内未缓存请求量除以同段时间内的独立访客数,再除以每次访问的平均时长(分钟)。最后乘以 4(或更高),得到网站每分钟的预估阈值。通常该值设置为高于 4 更合适,因为攻击流量往往比正常流量高出一个数量级以上。
要为特定 URL 计算速率限制阈值,请使用该 URL 在 24 小时内的未缓存请求与独立访客数据。请结合用户反馈和监控结果调节阈值。
以下章节介绍常见的两种速率限制规则配置方式。
速率限制提供一键 Protect your login(保护登录) 功能,可在 5 分钟内收到超过 5 次 POST 请求时封禁该客户端 15 分钟。该设置可阻挡大多数暴力破解尝试。
- 登录 Cloudflare 仪表板 ↗,选择您的账户和域名。
- 进入 Security(安全) > WAF > Rate limiting rules(速率限制规则)。
- 在 Rate Limiting(速率限制) 下选择 Protect your login(保护登录)。
- 在弹出的 Protect your login(保护登录) 对话框中填写 Rule Name(规则名称) 和 Enter your login URL(登录地址)。
- 选择 Save(保存)。
- Rule Name(规则名称) 会出现在您的 Rate Limiting(速率限制) 规则列表中。
-
登录 Cloudflare 仪表板 ↗,选择您的账户和域名。
-
进入 Security(安全) > WAF > Rate limiting rules(速率限制规则)。
-
选择 Create rate limiting rule(创建速率限制规则)。系统会弹出一个对话框,在其中填写新规则的详细信息。

-
在 Rule Name(可识别的规则名称) 中输入可识别的规则名称。
-
在 If Traffic Matching the URL(匹配 URL 的流量) 中,从下拉框选择 HTTP 协议并输入 URL。
-
在 from the same IP address exceeds(同一 IP 地址请求超过) 中输入大于 1 的整数,表示采样周期内的请求数量。
-
在 requests per(计数周期) 中选择计数周期(统计请求数的时间段)。Enterprise 套餐可手动输入 10 秒到 3,600 秒(1 小时)之间的值。
-
在 Then(然后) 中依据套餐选择可用动作。详见规则缓解动作。
-
如果选择的是 Block(拦截) 或 Log(记录),请在 matching traffic from that visitor for(该访问者持续匹配时长) 中设置命中阈值后动作持续时长。Enterprise 套餐可手动输入 10 秒到 86,400 秒(24 小时)之间的任意值。
-
点击 Save and Deploy(保存并部署) 激活新规则。
新建规则会显示在速率限制规则列表中。
通常情况下,降低阈值建议:
- 保留现有规则,同时添加一条使用更低阈值的新规则。
- 新规则生效后,等待旧规则的动作持续时长结束后再删除旧规则。
若需提高阈值(例如出现误伤正常客户端),可在现有规则内直接调高阈值。
高级筛选条件允许您为速率限制规则配置匹配的 HTTP 方法、响应标头和值源站响应码。
为新建或现有规则设置高级筛选条件:
-
展开 Advanced Criteria(高级筛选条件)。

-
在 Method(s)(方法) 中选择一个值。默认值为 ANY,表示匹配所有 HTTP 方法。
-
通过 HTTP 响应标头(HTTP Response Header(s)) 筛选。点击 Add header response field(添加响应标头字段) 可添加您的源站返回标头。
默认会添加
CF-Cache-Status标头,用于让 Cloudflare 优先返回缓存资源并避免对缓存资源施加速率限制。若希望缓存资源也受速率限制,可在该项点选 X 移除该标头,或启用 Also apply rate limit to cached assets(也将速率限制应用到已缓存资源)。若您在 HTTP 响应标头(HTTP Response Header(s)) 下添加多个标头,默认采用 AND 逻辑。要排除某个标头,请使用 Not Equals(不等于) 选项。标头名称不区分大小写。
-
在 Origin Response code(s)(源站响应码) 下输入要匹配的 HTTP 响应码数字,多项请用英文逗号分隔(例如:
401, 403)。 -
(可选)按您的套餐配置其他速率限制功能。
-
点击 Save and Deploy(保存并部署)。
高级响应用于配置规则触发阈值后,Cloudflare 返回给客户端的内容格式。若要返回静态纯文本或 JSON,可选择该功能。
-
扩展配置 Advanced Response(高级响应)。

-
在 Response type(响应类型) 中选择除默认值外的格式:
_Custom JSON(自定义 JSON)_或_Custom TEXT(自定义文本)_。 -
输入希望返回的纯文本或 JSON 内容,最大支持 32 KB。
-
(可选)按套餐配置其他速率限制功能。
-
点击 Save and Deploy(保存并部署)。
如需展示自定义 HTML 页面,请在仪表板中为 HTTP 429(请求过多)配置自定义错误页。若在 **Response type(响应类型)(该字段默认值)**中选择 Default Cloudflare Rate Limiting Page(默认 Cloudflare 速率限制页面),Cloudflare 会展示该页面。
可按以下方式将被速率限制的客户端重定向到特定 URL:
-
在您的服务器上创建一个 HTML 页面,并将其设置为最终要显示页面的跳转地址。页面内容中请包含 meta
refresh↗ 标签,示例如下:<!doctype html> <html> <head> <meta charset="utf-8" /> <title>自定义速率限制页面</title> <meta http-equiv="refresh" content="0; url='https://yourzonename/block'" /> </head> <body></body> </html>记录该页面的公开 URL。
-
在 Cloudflare 仪表板中,进入 Settings(设置) 页面。
Go to Configurations ↗ -
打开 Error Pages(错误页)。
-
在 Rate limiting block(速率限制拦截页) 旁边点击三点菜单 > Edit(编辑)。
-
选择 Custom page(自定义页面)。
-
在 Custom page address(自定义页面地址) 中填写您在服务器上创建的页面 URL(即包含 meta
refresh标签的页面)。 -
选择 Save(保存)。
如果您希望返回纯文本或 JSON,但内容大于 32 KB,可采用同样方式。此时重定向 URL 应指向待展示的纯文本或 JSON 资源。
Bypass(绕过) 会为一组 URL 创建例外(允许列表),使其即使命中速率限制规则也不执行任何动作。
配置 Bypass(绕过):
-
展开 Bypass(绕过)。
-
在 Bypass rule for these URLs(需绕过的 URL 列表) 中填入需要豁免的 URL,每行填写一个。URL 中显式写入的
HTTP或HTTPS在规则保存时会被移除,并改为同时匹配两种协议。
-
(可选)按套餐配置其他速率限制功能。
-
点击 Save and Deploy(保存并部署)。
在 Analytics & logs(分析与日志) > Security(安全) 查看区域级速率限制分析。速率限制图表中,实线表示模拟匹配流量,虚线表示实际被拦截流量。通过 Cloudflare Logs 能够查看由速率限制规则生成的日志,但该日志仅 Enterprise 客户可见。
Cloudflare 对被拦截的请求返回 HTTP 429。关于各地区被拦截请求的明细,可在 Analytics(分析) > Traffic(流量) 中的 Status codes(状态码) 页面查看(仅 Enterprise 可见)。
速率限制规则会按“最新创建 -> 最旧创建”的顺序逐条评估。
例如,如果一个请求同时匹配以下两条规则:
- 规则 #1:匹配
test.example.com(创建于 2024-03-01) - 规则 #2:匹配
*.example.com*(创建于 2024-03-12)
因此,在上述示例中会优先触发规则 #2,因为它是最近创建的规则。
另外,如果匹配命中后 WAF 执行的是 Log 动作(该动作不终止处理),系统会继续评估后续速率限制规则。若 WAF 执行的是其他动作,其余规则将不再继续评估。
速率限制旨在抑制超出用户定义速率的流量突发,而不是精确控制每秒可达源站的请求数。系统在检测请求与更新内部计数器之间可能存在延迟,通常可达数秒,因此在阻断或质询动作生效前,仍可能有部分超额请求到达源站。