レート制限(旧バージョン)
Cloudflareのレート制限は、特定のURLまたはドメイン全体に対する過剰なリクエストレートを自動的に特定し、軽減します。
リクエストレートは、個々のCloudflareデータセンターでローカルに計算されます。レート制限の最も一般的な使用例は次のとおりです:
- DDoS攻撃 ↗からの保護
- ブルートフォース攻撃 ↗からの保護
- フォーラム検索、API呼び出し、またはオリジンでのデータベース集約操作を含むリソースへのアクセス制限
個々のIPv4アドレスまたはIPv6 /64 IP範囲がルールの閾値を超えると、オリジンサーバーへのさらなるリクエストはHTTP 429レスポンスステータスコードでブロックされます。レスポンスには、クライアントがリクエストの送信を再開できる時期を示すRetry-Afterヘッダーが含まれます。
キャッシュされたリソースと既知の検索エンジンのクローラーは、レート制限ルール(旧バージョンのみ)から除外されます。したがって、これらはあなたのウェブサイトのSEOランキングに影響を与えません。
許可されるレート制限ルールの数は、ドメインのプランによって異なります:
| プラン | ルール | レスポンスヘッダーに一致するルール | アクション | アクションの期間 | リクエスト期間 |
|---|---|---|---|---|---|
| 無料 | 1 | 1 | ブロック | 1分または1時間 | 10秒または1分 |
| プロ | 10 | 1 | ブロック、インタラクティブチャレンジ、JSチャレンジ、管理チャレンジ、またはログ | 1分または1時間 | 10秒または1分 |
| ビジネス | 15 | 10 | ブロック、インタラクティブチャレンジ、JSチャレンジ、管理チャレンジ、またはログ | 1分、1時間、または24時間 | 10秒、1分、または10分 |
| エンタープライズ | 100 | 10 | ブロック、インタラクティブチャレンジ、JSチャレンジ、管理チャレンジ、またはログ | 10秒から86,400秒(24時間)の間で入力された任意の期間 | 10秒から3,600秒(1時間)の間で入力された任意の値 |
Cloudflareのレート制限は、ドメインのCloudflareプランに応じて複数のレベルの構成制御をサポートしています。以下の表は、プランに基づいてできることを示しています:
| 順位 | タスク | 利用可能プラン |
|---|---|---|
| 1 | 基本的なレート制限ルールを構成する | すべてのプラン |
| 2 | 高度な基準を構成する | ビジネスおよびエンタープライズプラン |
| 3 | 高度なレスポンスを構成する | ビジネスおよびエンタープライズプラン |
| 4 | バイパスオプションを構成する | エンタープライズプラン |
レート制限ルールは、3つの異なるコンポーネントで構成されています:
受信リクエストは、リクエストパス、リクエストスキーム、リクエストメソッド、および(オプションで)オリジンレスポンスコードに基づいて一致します。
例えば:
http://example.com/examplehttp://example.com/example/*
リクエストパスは大文字と小文字を区別しません。パターンは、クエリ文字列(?)やアンカー(#)の後のコンテンツには一致しません。アスタリスク(*)は、空のシーケンスを含む任意の文字のシーケンスに一致します。例えば:
*.example.com/*は、example.comの任意のサブドメインの任意のパスに一致します。*example.com/example.htmlは、example.comまたはexample.comの任意のサブドメインのexample.htmlに一致します。*は、あなたのサイトの任意のページに一致します。
example.com/pathへのリクエストは、example.com/path/とは異なります。このルールの唯一の例外はホームページです:example.comはexample.com/に一致します。
HTTPまたはHTTPS。指定がない場合は、両方が一致し、ルールはALLをリストします。
POSTまたはGET。指定がない場合は、すべてのメソッドが一致し、ルールはALLをリストします。
例えば、オリジンサーバーがHTTP 401または403ステータスコードを返すときのみ、レート制限ルールに一致させます。レスポンスコード基準に一致するトリガーされたルールは、そのクライアントからの後続のリクエストをオリジンレスポンスコードに関係なくブロックします。
ルールは、同じクライアントからのすべてのリクエストの数と期間に基づいて一致することができます。
最低2つのリクエストを指定します。単一リクエストのブロックの場合は、パスを利用できないようにします — 例えば、オリジンサーバーを構成してHTTP 403ステータスコードを返すようにします。
クライアントのリクエストが指定された期間内に閾値を超えると、ルールがトリガーされます。
ルールの軽減は、軽減アクションと禁止期間で構成されます。
レート制限アクションは、利用可能性で述べたドメインプランに基づいています:
- ブロック:閾値を超えた場合、Cloudflareは
HTTP 429エラーを発行します。 - JSチャレンジ:訪問者はCloudflareのJavaScriptチャレンジを通過する必要があります。通過した場合、Cloudflareはリクエストを許可します。
- 管理チャレンジ(推奨):訪問者は、リクエストの特性に基づいてCloudflareによって動的に選択されたチャレンジを通過する必要があります。通過した場合、Cloudflareはリクエストを許可します。
- インタラクティブチャレンジ:訪問者はインタラクティブチャレンジを通過する必要があります。通過した場合、Cloudflareはリクエストを許可します。
- ログ:リクエストはCloudflareログに記録されます。これにより、プロダクションに適用する前にルールをテストするのに役立ちます。
チャレンジアクションの詳細については、Cloudflareチャレンジを参照してください。
閾値よりも短いタイムアウトを設定すると、APIは自動的にタイムアウトを閾値と同じに増加させます。
レート制限に達した訪問者は、カスタムエラーページが指定されていない場合、デフォルトのHTMLページを受け取ります。さらに、ビジネスおよびエンタープライズの顧客は、ルール自体でレスポンスを指定できます。詳細については、高度なレスポンスを構成するを参照してください。
Cloudflareのレート制限の一般的な閾値を特定するには、キャッシュされていないウェブサイトリクエストの24時間を同じ24時間のユニークビジター数で割ります。次に、訪問の推定平均分数で割ります。最後に、あなたのウェブサイトの1分あたりの推定閾値を確立するために4(またはそれ以上)を掛けます。4を超える値は問題ありません。ほとんどの攻撃は、通常のトラフィックレートの桁違いです。
特定のURLのURLレート制限を特定するには、特定のURLのキャッシュされていないリクエストとユニークビジターの24時間を使用します。ユーザーの報告や独自の監視に基づいて閾値を調整します。
以下のセクションでは、2つの一般的なタイプのレート制限ルールをカバーします。
レート制限には、5分以内に5回以上のPOSTリクエストを送信したクライアントを15分間ブロックするルールを作成するワンクリックのログインを保護するツールがあります。これは、ほとんどのブルートフォース攻撃をブロックするのに十分です。
- Cloudflareダッシュボード ↗にログインし、アカウントとドメインを選択します。
- セキュリティ > WAF > レート制限ルールに移動します。
- レート制限の下で、ログインを保護するを選択します。
- 表示されるログインを保護するダイアログでルール名とログインURLを入力します。
- 保存を選択します。
- ルール名があなたのレート制限ルールリストに表示されます。
-
Cloudflareダッシュボード ↗にログインし、アカウントとドメインを選択します。
-
セキュリティ > WAF > レート制限ルールに移動します。
-
レート制限ルールを作成を選択します。新しいルールの詳細を指定するダイアログが開きます。

-
ルール名に説明的な名前を入力します。
-
URLに一致するトラフィックの場合、ドロップダウンからHTTPスキームを選択し、URLを入力します。
-
同じIPアドレスからのリクエストが超えた場合に、サンプリング期間内のリクエスト数を表す1より大きい整数を入力します。
-
リクエストごとに、サンプリング期間(リクエストがカウントされる期間)を選択します。エンタープライズプランのドメインは、10秒から3,600秒(1時間)の間で任意の期間を手動で入力できます。
-
次に、プランに基づいて利用可能なアクションの1つを選択します。詳細については、ルールの軽減セクションを確認してください。
-
ブロックまたはログを選択した場合、その訪問者からの一致するトラフィックの期間に、閾値がトリガーされた後にオプションを適用する期間を選択します。エンタープライズプランのドメインは、10秒から86,400秒(24時間)の間で任意の値を入力できます。
-
新しいルールを有効にするには、保存してデプロイを選択します。
新しいルールがレート制限ルールリストに表示されます。
一般的に、閾値を低く設定する場合:
- 既存のルールをそのままにして、低い閾値の新しいルールを追加します。
- 新しいルールが設定されたら、古いルールのアクション期間が経過するのを待ってから古いルールを削除します。
高い閾値を設定する場合(正当なクライアントのブロックによる)、既存のルール内で閾値を増加させます。
高度な基準オプションは、レート制限ルールに一致させるHTTPメソッド、ヘッダー応答、およびオリジンレスポンスコードを構成します。
新しいまたは既存のルールの高度な基準を構成するには:
-
高度な基準を展開します。

-
メソッドから値を選択します。デフォルト値はANYで、すべてのHTTPメソッドに一致します。
-
HTTPレスポンスヘッダーでフィルタリングします。オリジンウェブサーバーによって返されるヘッダーを含めるには、ヘッダー応答フィールドを追加を選択します。
CF-Cache-Statusヘッダーはデフォルトで表示され、Cloudflareがキャッシュされたリソースを提供するため、これらのリソースをレート制限しません。キャッシュされたリソースにもレート制限を適用するには、このヘッダーを選択して削除するか、キャッシュされたアセットにもレート制限を適用を有効にします。HTTPレスポンスヘッダーの下に複数のヘッダーがある場合、ANDのブール論理が適用されます。ヘッダーを除外するには、Not Equalsオプションを使用します。各ヘッダーは大文字と小文字を区別しません。
-
オリジンレスポンスコードの下に、一致させる各HTTPレスポンスコードの数値を入力します。2つ以上のHTTPコードはカンマで区切ります(例:
401, 403)。 -
(オプション)プランに基づいて追加のレート制限機能を構成します。
-
保存してデプロイを選択します。
高度なレスポンスオプションは、ルールの閾値が超えたときにCloudflareが返す情報形式を構成します。静的なプレーンテキストまたはJSONコンテンツを返したい場合は高度なレスポンスを使用します。
プレーンテキストまたはJSONレスポンスを構成するには:
- 高度なレスポンスを展開します。

-
デフォルト以外のResponse typeフォーマットを選択します: Custom JSONまたはCustom TEXT。
-
返したいプレーンテキストまたはJSON応答を入力します。最大応答サイズは32 KBです。
-
(オプション)プランに基づいて追加のレート制限機能を構成します。
-
Save and Deployを選択します。
カスタムHTMLページを表示したい場合は、ダッシュボードでHTTP 429エラー(リクエストが多すぎます)用のカスタムページを構成します。Cloudflareは、Response typeでDefault Cloudflare Rate Limiting Pageを選択したときにこのページを表示します(フィールドのデフォルト値)。
レート制限されたクライアントを特定のURLにリダイレクトするには、以下の方法を使用できます。
-
サーバー上に、表示したいページの最終URLにリダイレクトするHTMLページを作成します。以下の例のように、ページコンテンツにmeta
refresh↗タグを含めます:<!doctype html><html><head><meta charset="utf-8"><title>カスタムRLページ</title><meta http-equiv="refresh" content="0; url='https://yourzonename/block'" /></head><body> </body></html>作成したページの公開URLに注意してください。
-
Cloudflareダッシュボードで、Account Home > Configurations > Custom Pagesに移動します。
-
429 errorsの下で、Custom Pagesを選択します。
-
サーバー上に作成したページのURL(meta
refreshタグを含むページ)を入力し、Publishを選択します。
プレーンテキストまたはJSONコンテンツを返したい場合も同様のアプローチを取りますが、応答が32 KBを超える場合は、リダイレクトURLは表示したいプレーンテキストまたはJSONリソースのURLになります。
Bypassは、特定のURLセットに対してアクションが適用されないようにする許可リストまたは例外を作成します。
Bypassを構成するには:
-
Bypassを展開します。
-
Bypass rule for these URLsに、レート制限ルールから除外するURLを入力します。各URLを別々の行に入力します。URLに指定されたHTTPまたはHTTPSは、ルールが保存されると自動的に削除され、HTTPとHTTPSの両方に適用されます。

-
(オプション)プランに基づいて追加のレート制限機能を構成します。
-
Save and Deployを選択します。
Analytics > Securityでレート制限の分析を表示します。レート制限の分析は、シミュレートされたリクエストに一致するトラフィックを表すために実線を使用し、実際にブロックされたリクエストを表すために点線を使用します。レート制限ルールによって生成されたログは、エンタープライズ顧客のみがCloudflare Logsを通じて見ることができます。
Cloudflareは、ブロックされたリクエストに対してHTTP 429エラーを返します。場所ごとのブロックされたリクエストの詳細は、Analytics > Trafficで利用可能な分析ダッシュボードのStatus codesの下でエンタープライズ顧客に提供されます。
レート制限ルールは、最も最近作成されたルールから古いルールへと評価されます。
例えば、リクエストが以下の2つのルールに一致する場合:
- ルール #1:
test.example.comに一致(2024-03-01に作成) - ルール #2:
*.example.com*に一致(2024-03-12に作成)
この場合、ルール #2が最初にトリガーされます。なぜなら、それが最後に作成されたからです。
さらに、一致がありWAFがLogアクションを適用する場合、他のレート制限ルールの評価を続けます。Logは非終了アクションだからです。WAFが他のアクションを適用した場合、他のルールは評価されません。
レート制限は、ユーザー定義のレートを超えるトラフィックの急増を制限するように設計されています。このシステムは、オリジンサーバーに到達する正確なリクエスト数を許可するようには設計されていません。リクエストを検出して内部カウンターを更新する間に遅延が発生する場合があります。この遅延は数秒に及ぶことがあり、そのため、ブロックやチャレンジなどのアクションが適用される前に、過剰なリクエストがオリジンに到達する可能性があります。