我有 3 个 API 端点,在 Cloudflare 上需要相同的 速率限制。所以,我把它们放在一起了。
规则是这样的:
如果传入请求匹配:
Host = "https://www.x.com" AND URI Path = "/a"
OR
Host = "https://www.x.com" AND URI Path = "/b"
OR
Host = "https://www.x.com" AND URI Path = "/c"
(注意上面 AND 和 OR 运算符的用法)
具有相同特征:
Header value of identifier
当利率超过:
10 requests in 1 minute
然后采取行动:
Block requests for 1 day
以下情况会发生什么:
是否为路径a
、
b
和c
创建了单独的计数器存储桶?
因此,只有当用户在一分钟内发出 10 次路径
a
请求(或 10 次路径b
请求或 10 次路径c
请求)时,该用户就会被屏蔽一天。
是为所有路径a
、
b
和c
组合在一起创建的公共计数器桶吗?
因此,如果用户在一分钟内发出 7 次路径
a
请求和 3 次路径 c
请求,则该用户将被屏蔽一天。
是否为路径 a、b 和 c 创建单独的计数器桶?
因此,只有当用户在一分钟内对路径 a 发出 10 次请求(或对路径 b 发出 10 次请求,或对路径 c 发出 10 次请求)时,该用户就会被屏蔽一天。
不,在这种情况下,桶仅依赖于
Header value of identifier
。
您需要另外设置
AND Path
条件
是否为所有路径a、b和c组合在一起创建了一个公共计数器桶?
因此,如果用户在一分钟内对路径 a 发出 7 个请求,对路径 c 发出 3 个请求,则该用户将被屏蔽一天。
是的。如果您想为每个路径单独存储桶,则必须执行上述操作。
详细请参阅此文档
https://developers.cloudflare.com/waf/rate-limiting-rules/request-rate/