限制请求速率

页面规则下拉菜单中提供了多个已分类的动作选项。其中,“限制请求动作”类别包含用于控制请求流量的动作。

选择限制请求速率动作:

请求速率限制基于漏桶算法工作,我们可通过以下三个参数来进行请求管理:

  1. 关键字:默认为客户端的 IP 地址,可通过下拉菜单更改为 URI、URI 参数或 Cookie。若选择 URI 参数或 Cookie,还需额外指定一个相应的 Argument 字段;
  2. 调节阈值:低于此速率的请求不受影响;速率介于此阈值与拒绝阈值之间的请求,将被延时处理;
  3. 拒绝阈值:超过此速率的请求将直接返回 HTTP 状态码 503,即请求遭拒绝。

这两个阈值参数默认单位是每秒请求数,也可以设置为每分钟请求数

若两阈值设置相同,则超出该速率的请求会立即被拒绝。

请求将依据设定的关键字进行限速,可选关键字包括:

  • 客户端 IP 地址,如:1.1.1.1
  • 请求的 URI,例如:/openresty
  • URI 查询参数,如 /openresty?arg1=val1 中的 arg1
  • 请求 Cookie,比如 cookie: c1=v1 中的键 c1
  • X-Forwarded-For 请求头中的第一个 IP 地址,如 X-Forwarded-For: 1.1.1.1, 1.1.1.2 中的 1.1.1.1
  • X-Forwarded-For 请求头中的最后一个 IP 地址,如 X-Forwarded-For: 1.1.1.1, 1.1.1.2 中的 1.1.1.2
  • 特定的 HTTP 请求头,例如 Host

达到限速条件后,系统可执行以下预设动作,默认为 返回默认错误页

  • 关闭请求连接:立即终止与客户端的连接,不再响应请求。
  • 返回错误页,默认为状态码 503:限速生效时向用户展示带有 503 状态码的错误页面,暗示服务器暂时无法处理请求。
  • 完成 hCaptcha 验证:要求用户通过 hCaptcha 挑战,以区分真人和机器行为。
  • 完成 OpenResty Edge Captcha 验证:使用 OpenResty Edge 的验证码系统验证用户身份。
  • 重定向验证:将请求重定向至验证页面,验证通过后方可继续访问。
  • JavaScript 挑战:要求用户浏览器执行 JavaScript 代码,验证非机器人操作。

默认情况下,该动作针对所有请求,在客户端地址基础上限速。这种规则可能过于宽泛,我们可以通过下述方式实现更细致的条件控制。 如同动作设置,条件也按照 URI、请求、响应、客户端信息等类别整理。这里我们以客户端信息中的国家为例,设置仅对来自日本的请求执行上述动作:

输入日本的国家代码 JP,所有大洲、国家、省份、城市的代码可在 Edge 文档中找到:client-country

完成动作和条件设置后,点击右下方的“创建”按钮即可应用规则。页面将自动跳转回规则列表页面。