限制請求速率

頁面規則下拉選單中提供了多個已分類的動作選項。其中,“限制請求動作”類別包含用於控制請求流量的動作。

選擇限制請求速率動作:

請求速率限制基於漏桶演算法工作,我們可透過以下三個引數來進行請求管理:

  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

完成動作和條件設定後,點選右下方的“建立”按鈕即可應用規則。頁面將自動跳轉回規則列表頁面。