以下は、レート制限ルール設定のサンプルです。
次の レート制限ルール は、ログインページ宛ての米国からの受信リクエストにレート制限を適用します。許可する IP アドレス 1 件は除きます。
受信リクエストが次に一致する場合:
| フィールド | 演算子 | 値 | |
|---|---|---|---|
| URI Path | equals | /login |
And |
| Country | equals | United States |
And |
| IP Source Address | does not equal | 192.0.0.1 |
式エディターを使う場合:
(http.request.uri.path eq "/login" and ip.src.country eq "US" and ip.src ne 192.0.0.1)
同じ特性で集計:
- IP
- Data center ID(ダッシュボードではデフォルトで含まれますが、表示されません)
次の レート制限ルール は、指定したベース URI パスへの受信リクエストにレート制限を適用し、IP アドレスと指定した API キーでカウントを増やします。
受信リクエストが次に一致する場合:
| フィールド | 演算子 | 値 | |
|---|---|---|---|
| URI Path | contains | /product |
And |
| Request Method | equals | POST |
式エディターを使う場合:
(http.request.uri.path contains "/product" and http.request.method eq "POST")
同じ特性で集計:
- IP
- Header value of >
x-api-key - Data center ID(ダッシュボードではデフォルトで含まれますが、表示されません)
次の レート制限ルール は、2 つのホスト上の複数 URI パスを対象とするリクエストにレート制限を適用し、既知のボットは除外します。リクエスト率は IP アドレスと User-Agent の値に基づきます。
受信リクエストが次に一致する場合:
(http.request.uri.path eq "/store" or http.request.uri.path eq "/prices") and (http.host eq "mystore1.com" or http.host eq "mystore2.com") and not cf.client.bot
同じ特性で集計:
- IP
- Header value of >
user-agent - Data center ID(ダッシュボードではデフォルトで含まれますが、表示されません)
次の レート制限ルール は、複雑度ベースのレート制限を行います。ルールは、オリジンサーバーが返す my-score HTTP レスポンスヘッダーを使い、指定した API キーを持つクライアントの合計複雑度スコアを計算します。
合計スコアのカウンターは、レート制限ルールの カウント式 に一致したときに更新されます(この例ではカウント式を指定していないため、ルール式と同じです)。この合計スコアが 1 分間に 400 を超えると、それ以降のクライアントリクエストは 10 分間ブロックされます。
受信リクエストが次に一致する場合:
| フィールド | 演算子 | 値 |
|---|---|---|
| URI Path | wildcard | /graphql/* |
式エディターを使う場合:
(http.request.uri.path wildcard "/graphql/*")
同じ特性で集計:
- Header value of >
x-api-key - Data center ID(ダッシュボードではデフォルトで含まれますが、表示されません)
レート超過時: Complexity based
- Score per period:
400 - Period: 1 minute
- Response header name:
my-score
次のアクションを実行:
- アクションを選択: Block
次の動作: Block for the selected duration
- Duration: 10 minutes
このルール設定の API 例は、API でレート制限ルールを作成する を参照してください。