key-rate-limitプラグインは、特定のキー値に基づいてスロットリングを実装します。 キー値は、URLパラメーターまたはHTTPリクエストヘッダーから取得できます。 このトピックでは、key-rate-limitプラグインを設定する方法について説明します。
プラグイン型
スロットルプラグイン。
フィールド
項目 | データ型 | 必須 / 任意 | デフォルト値 | 説明 |
limit_by_ヘッダー | String | いいえlimit_by_headerまたはlimit_by_paramを設定する必要があります。 | - | スロットリングのキー値を取得するHTTPリクエストヘッダー。 |
limit_by_param | String | いいえlimit_by_headerまたはlimit_by_paramを設定する必要があります。 | - | スロットリングのキー値を取得するURLパラメーター。 |
limit_keys | オブジェクトの配列 | 対象 | - | 特定のキー値が一致した後にレート制限がトリガーされる回数。 |
次の表に、limit_keysフィールドの設定項目を示します。
設定アイテム | データ型 | 必須 / 任意 | デフォルト値 | 説明 |
キー | String | 対象 | - | リクエストの照合に使用されるキー値。 |
query_per_second | 数値 | いいえquery_per_second、query_per_minute、query_per_hour、またはquery_per_dayを設定する必要があります。 | - | 1秒あたりに許可されるリクエストの数。 |
query_per_minute | 数値 | いいえquery_per_second、query_per_minute、query_per_hour、またはquery_per_dayを設定する必要があります。 | - | 1分あたりに許可されるリクエストの数。 |
query_per_hour | 数値 | いいえquery_per_second、query_per_minute、query_per_hour、またはquery_per_dayを設定する必要があります。 | - | 1時間あたりに許可されるリクエストの数。 |
query_per_day | 数値 | いいえquery_per_second、query_per_minute、query_per_hour、またはquery_per_dayを設定する必要があります。 | - | 1日に許可されるリクエストの数。 |
例
リクエストヘッダーx-ca-keyのキー値に基づいてスロットリングを実行します。
limit_by_header: x-ca-key limit_keys: - key: 102234 query_per_second: 10 - key: 308239 query_per_hour: 10リクエストパラメータapikeyのキー値に基づいてスロットリングを実行します。
limit_by_param: apikey limit_keys: - key: 9a342114-ba8a-11ec-b1bf-00163e1250b5 query_per_second: 10 - key: a6a6d7f2-ba8a-11ec-bec2-00163e1250b5 query_per_minute: 100ルートまたはドメイン名のスロットリングを有効にします。
route-aおよびroute-bのルートに次のプラグイン設定を適用します。limit_by_header: x-ca-key limit_keys: - key: 102234 query_per_second: 10次のプラグイン設定を
* .example.comおよびtest.comドメイン名に適用します。limit_by_header: x-ca-key limit_keys: - key: 102234 query_per_second: 100説明この例では、
route-aとroute-bのルートは、ゲートウェイルートの作成時に指定されたルートです。 クライアント要求がルートのいずれかと一致する場合、一致したルートに設定されているルールが有効になります。この例では、
* .example.comとtest.comドメイン名を使用して、リクエストのドメイン名を照合します。 クライアント要求がいずれかのドメイン名と一致する場合、一致したドメイン名に設定されているルールが有効になります。設定したルールは順番に有効になります。 最初のルールが一致する場合、後続のルールは無視されます。