Waiting Room Bypass Rule は、Cloudflare の Ruleset Engine 上に構築され、Waiting Room API で管理する Waiting Room Rule の一種です。Waiting Room Bypass Rule では、サイトやアプリケーションのうち、Waiting Room を適用したくない特定のトラフィックや領域を指定できます。各バイパスルールは、個々の Waiting Room 単位で作成・管理します。Waiting Room のトラフィックを細かく制御できます。
バイパスルールの適用先を指定するには、Cloudflare Ruleset Engine で使える フィールド を使って カスタムロジック を書きます。ただし、次は使えません。
cf.threat_scoreと、cf.bot_managementで始まるフィールド- HTTP 応答フィールド
バイパスルールの式に一致するトラフィックには Waiting Room は適用されず、アクティブユーザーとしてもカウントされません。Event pre-queueing、Reject キューイング方式、Queue-all を含む、すべての Waiting Room 機能は、このトラフィックには適用されません。Bypass Waiting Room ルールを作成・有効にするときは、この点に注意してください。オリジンを圧倒したり、大きなトラフィック急増を起こしたりしないと確信できるトラフィックにだけ、バイパスルールを使ってください。
- パス / URL の除外: Waiting Room に設定したパス配下のうち、Waiting Room を適用したくない特定のパスや URL をバイパスします。
- 管理者のバイパス: 社内のサイト管理者は、常に Waiting Room をバイパスできるようにします。多くは IP アドレスで識別します。
- 地域ターゲティング: 特定の国をキュー対象から除外します。
- クエリ文字列の除外: Waiting Room に設定したパス配下の、特定のクエリ文字列を除外します。
- ファイル拡張子の除外:
.jsなど、Waiting Room の HTML テンプレートで使う特定のファイル拡張子に Waiting Room が適用されないようにし、正しく描画されるようにします。
除外したいクエリ文字列やパスに加えて、サブリクエストがアクセスするパスやファイル種別も式に含めてください。そうしないと、これらのアセットやパスにも Waiting Room が適用されます。サブリクエストにも Waiting Room の Cookie が付与されます。まだ Waiting Room の対象だからです。
画像、JavaScript ファイル、CSS ファイルなどが該当します。リクエストが .js、.css、.png などで終わる場合にバイパスするようルールを設定すれば、特定のファイル種別のパスすべてで Waiting Room をバイパスできます。アセットが置かれている各パスを手作業で設定する必要はありません。
条件の例: ends_with(http.request.uri.path, ".js")
新しいバイパスルールを作成するには、次の手順を実行します。
-
Cloudflare ダッシュボードで、Waiting Room ページを開きます。
Waiting Room を開く ↗ -
Waiting Room を展開し、Manage rules を選択します。
-
Create new bypass rule を選択します。
-
Rule name に、ルールのわかりやすい名前を入力します。
-
When incoming requests match で、ルール式を定義します。Field ドロップダウンリストから HTTP プロパティを選びます。各リクエストについて、Field に選んだプロパティの値が、Operator で選んだ演算子を使って、Value に指定した値と比較されます。
-
Then では、Bypass Waiting Room アクションが自動的に選ばれます。保存する前に式を確認し、一致するトラフィックが、Waiting Room を適用したくないトラフィックであることを確かめてください。
-
ルールを保存してデプロイするには、Save and Deploy を選択します。まだデプロイしない場合は、Save as Draft を選択します。
- 比較演算子は、式が true を返すために、式で定義した値が実際の HTTP リクエストの値とどう関係する必要があるかを指定します。
- 論理演算子は、2 つの式を組み合わせて複合式を作ります。評価の順序は優先順位で決まります。
- グループ化記号は、式を整理し、演算子の優先順位を強制し、式を入れ子にできます。
例と使い方は、Rules language ドキュメントの 演算子とグループ化記号 を参照してください。
Waiting Room のバイパスルールは、Waiting Room API で管理、削除、作成できます。バイパスルールは、bypass_waiting_room アクションを使う Waiting Room Rule です。
API で Bypass Waiting Room Rule を作成するときは、次を確認してください。
- ルールを適用したい Waiting Room を、すでに作成して保存していること。
- Waiting Room をバイパスさせたいトラフィックを示す式を定義すること。
- ルールのアクションを
bypass_waiting_roomに設定すること。
Waiting Room ルールを作成するには、Cloudflare API のベース URL に、Waiting Room API の次のエンドポイントを付けます。新しい Waiting Room ルールは、既存ルールの後ろに追加されます。
POST zones/{zone_id}/waiting_rooms/{room_id}/rules必須および任意の次のパラメーターで、バイパスルールを設定します。
- Description(任意) - このバイパスルールの目的を残せるよう、説明を付けます。
- Expression(必須) - バイパスルールを適用するトラフィックを示すルール式を定義します。
- Action(必須) - 式が true のときに行うアクションを定義します。
bypass_waiting_roomに設定します。 - Enabled(任意) - デフォルトは true です。ルールをデプロイしない場合は、false に設定する必要があります。
Waiting Room 配下のパスと、そのすべてのサブパスをバイパスする
Waiting Room が example.com/ にあり、example.com/bypassme とそのすべてのサブパスへのトラフィックをバイパスしたい場合です。この例では、バイパス対象のパスでアセットが正しく読み込まれるよう、js、css、png のサブリクエストも Waiting Room をバイパスします。この例では、js、css、png で終わるすべてのリクエストが、サブパスに関係なく Waiting Room をバイパスします。意図と異なる場合は、要件とサイト構成に合わせて式を変更してください。
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "subpath bypass",
"expression": "starts_with(http.request.uri.path, \"/bypassme\") or ends_with(http.request.uri.path, \".js\") or ends_with(http.request.uri.path, \".css\") or ends_with(http.request.uri.path, \".png\")",
"action": "bypass_waiting_room"
}'定義した IP リストの Waiting Room バイパスを許可する
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/waiting_rooms/$WAITING_ROOM_ID/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"description": "ip list bypass",
"expression": "ip.src in $bypass_ip_list",
"action": "bypass_waiting_room"
}'Waiting Room API では、Waiting Room ルールの API 呼び出しを使って、バイパスルールに対して次も実行できます。
- List Waiting Room Rules: Waiting Room のルールを一覧します。
- Replace Waiting Room Rules: Waiting Room のすべてのルールを置き換えます。
- Patch Waiting Room Rules: Waiting Room のルールを更新します。
- Delete Waiting Room Rules: Waiting Room のルールを削除します。