Load Balancing ルールで使えるフィールドは、ロードバランサーを通るトラフィックを Cloudflare がプロキシするかどうかで変わります。
誤ったフィールドセットを使うと、想定外の動作になることがあります。最良の結果を得るには、トラフィックの プロキシステータス に対応するフィールドを使います。
また、一部の Load Balancing ルールフィールドは Expression Builder で使えます(Load Balancing の式 を参照)。それ以外は、API または Expression Editor で手動設定する必要があります。
Expression Builder で使えるフィールドのグループ分けは、次の表を参照してください。
| フィールドセット | Expression Builder のセクション | 説明 |
|---|---|---|
| プロキシの有無に関係なく使えるフィールド | BOTH |
ロードバランサーのプロキシステータスに関係なく、常に参照できる値です。 |
| プロキシ済み専用フィールド | PROXIED ONLY |
ロードバランサーがプロキシ済みのときだけ参照できる値です。 |
| 非プロキシ専用フィールド | NON-PROXIED ONLY |
ロードバランサーがプロキシされていないとき(DNS のみのトラフィック)だけ参照できる値です。 |
トラフィックの プロキシステータス に関係なく、Load Balancing ルールは次のフィールドの値にアクセスできます。
| フィールド | Expression Builder での名前 | 説明 |
|---|---|---|
cf.load_balancer.name
| Load Balancer Name | これらのルールを実行しているロードバランサーの名前です。 値の例: lb.example.com |
cf.load_balancer.region
| Load Balancer Region | リクエストを処理しているデータセンターの リージョン名 です。 値の例: ENAM |
ip.src
| IP Source Address | プロキシ済みの場合、このフィールドはクライアントの TCP IP アドレスです。
非プロキシ(DNS のみ)の場合、利用可能なら ECS の送信元アドレスです。利用できない場合は、クライアントリゾルバーの IP アドレスです。 廃止予定の警告: 今後、非プロキシのリクエストでは、このフィールドは常にクライアントリゾルバーの IP アドレスになります。ECS の有無を確認し、ECS IP を使うには、それぞれ dns.rr.opt.clientと dns.rr.opt.client.addrを参照してください。 値の例: 1.2.3.4 |
ip.src.asnum
| AS Number | クライアント IP アドレスに関連する自律システム(AS)番号を表す 16 ビットまたは 32 ビットの整数です。 値の例: 13335 |
トラフィックが Cloudflare 経由でプロキシされる場合、プロキシの有無に関係なく使えるフィールド に加え、次のフィールドも使えます。
これらのフィールドの多くは Rules 言語のドキュメント を参照しています。
| フィールド | Expression Builder での名前 | 説明 |
|---|---|---|
http.cookieString | (手動入力のみ) | Cookie 全体を文字列で表します。 値の例:
|
http.hostString | (手動入力のみ) | リクエスト URI 全体で使われているホスト名です。 値の例:
|
http.refererString | (手動入力のみ) | 現在リクエストしているページへリンクしたウェブページのアドレスを含む、HTTP Referer リクエストヘッダーです。 値の例:
|
http.request.headersMap<Array<String>> | Header | HTTP リクエストヘッダーを Map(連想配列)で表します。 連想配列のキーは、HTTP リクエストヘッダー名を小文字にしたものです。 同じヘッダーが繰り返される場合、配列にはリクエストに出現した順で含まれます。 デコード: デコードなし
例:
値の例:
|
http.request.methodString | Request Method | HTTP メソッドを、大文字の文字列で返します。 値の例:
|
http.request.timestamp.secInteger | Timestamp | Cloudflare がリクエストを受信した時刻です。Unix 時間(秒)で表し、10 桁です。 値の例:
|
http.request.uriString | URI | リクエストの URI パスとクエリ文字列です。 値の例:
|
http.request.uri.argsMap<Array<String>> | (手動入力のみ) | リクエストに関連する HTTP URI 引数を Map(連想配列)で表します。 引数が繰り返される場合、配列にはリクエストに出現した順で複数の項目が含まれます。 値は前処理されず、リクエストで使われた元の大文字小文字を保持します。 デコード: デコードなし
例:
値の例:
|
http.request.uri.args.namesArray<String> | (手動入力のみ) | HTTP URI クエリ文字列内の引数名です。名前は前処理されず、リクエストで使われた元の大文字小文字を保持します。 名前が繰り返される場合、配列にはリクエストに出現した順で複数の項目が含まれます。 デコード: デコードなし
例:
値の例:
|
http.request.uri.args.valuesArray<String> | (手動入力のみ) | HTTP URI クエリ文字列内の引数の値です。値は前処理されず、リクエストで使われた元の大文字小文字を保持します。順序もリクエストと同じです。 重複する値は複数回リストされます。 デコード: デコードなし
例:
値の例:
|
http.request.uri.pathString | URI Path | リクエストの URI パスです。 値の例:
|
http.request.uri.queryString | URI Query |
値の例:
|
http.request.versionString | HTTP Version | 使用している HTTP プロトコルのバージョンです。バージョンごとに異なるチェックが必要なときに使います。 値の例:
|
トラフィックが Cloudflare 経由でプロキシされない場合、プロキシの有無に関係なく使えるフィールド に加え、次のフィールドも使えます。
| フィールド | Expression Builder での名前 | 説明 |
|---|---|---|
dns.qry.name
| Query Name | 問い合わせたクエリ名です。 値の例: example.com. |
dns.qry.name.len
| Query Name Length | クエリ名の長さ(バイト)です。 値の例: 123 |
dns.qry.qu
| Question |
|
dns.qry.type
| Query Type | の数値です。 値の例:
|
dns.rr.opt.client
| ( 手動入力のみ ) |
|
dns.rr.opt.client.addr
| ( 手動入力のみ ) | 存在する場合、DNS リクエストとともに送られた ECS アドレスです。 値の例: 1.2.3.0 |
-
比較演算子 は、式が
trueを返すために、式で定義した値と実際の HTTP リクエスト値がどう関係するかを指定します。 -
論理演算子 は、2 つの式を組み合わせて複合式を作り、評価の順序は優先順位で決まります。
-
グループ化記号 は、式を整理し、演算子の優先順位を強制し、式を入れ子にできます。
例と使い方は、Rules 言語ドキュメントの 演算子とグループ化記号 を参照してください。