Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

対応しているフィールドと演算子

最終更新 Markdown で表示Agent セットアップ

Load Balancing ルールで使えるフィールドは、ロードバランサーを通るトラフィックを Cloudflare がプロキシするかどうかで変わります。

誤ったフィールドセットを使うと、想定外の動作になることがあります。最良の結果を得るには、トラフィックの プロキシステータス に対応するフィールドを使います。

また、一部の Load Balancing ルールフィールドは Expression Builder で使えます(Load Balancing の式 を参照)。それ以外は、API または Expression Editor で手動設定する必要があります。

Expression Builder のフィールドセット

Expression Builder で使えるフィールドのグループ分けは、次の表を参照してください。

フィールドセット Expression Builder のセクション 説明
プロキシの有無に関係なく使えるフィールド BOTH ロードバランサーのプロキシステータスに関係なく、常に参照できる値です。
プロキシ済み専用フィールド PROXIED ONLY ロードバランサーがプロキシ済みのときだけ参照できる値です。
非プロキシ専用フィールド NON-PROXIED ONLY ロードバランサーがプロキシされていないとき(DNS のみのトラフィック)だけ参照できる値です。
プロキシステータスのヘッダーに基づいて、ロードバランサーのフィールドを選びます

プロキシの有無に関係なく使えるフィールド

トラフィックの プロキシステータス に関係なく、Load Balancing ルールは次のフィールドの値にアクセスできます。

フィールドExpression Builder での名前説明
cf.load_balancer.name

Bytes

Load Balancer Name

これらのルールを実行しているロードバランサーの名前です。

値の例:


lb.example.com

cf.load_balancer.region

Bytes

Load Balancer Region

リクエストを処理しているデータセンターの

リージョン名

です。

値の例:


ENAM

ip.src

IP address

IP Source Address

プロキシ済みの場合、このフィールドはクライアントの TCP IP アドレスです。 X-Forwarded-ForX-Real-IP などの HTTP ヘッダーで、実際のクライアントアドレスに補正されることがあります。

非プロキシ(DNS のみ)の場合、利用可能なら ECS の送信元アドレスです。利用できない場合は、クライアントリゾルバーの IP アドレスです。

廃止予定の警告: 今後、非プロキシのリクエストでは、このフィールドは常にクライアントリゾルバーの IP アドレスになります。ECS の有無を確認し、ECS IP を使うには、それぞれ

dns.rr.opt.client

dns.rr.opt.client.addr

を参照してください。

値の例:


1.2.3.4

ip.src.asnum

Number

AS Number

クライアント IP アドレスに関連する自律システム(AS)番号を表す 16 ビットまたは 32 ビットの整数です。

値の例:


13335

プロキシ済み専用フィールド

トラフィックが Cloudflare 経由でプロキシされる場合、プロキシの有無に関係なく使えるフィールド に加え、次のフィールドも使えます。

これらのフィールドの多くは Rules 言語のドキュメント を参照しています。

フィールドExpression Builder での名前説明
http.host
String
(手動入力のみ)

リクエスト URI 全体で使われているホスト名です。

値の例:
www.example.org

http.referer
String
(手動入力のみ)

現在リクエストしているページへリンクしたウェブページのアドレスを含む、HTTP Referer リクエストヘッダーです。

値の例:
Referer: htt­ps://developer.example.org/en-US/docs/Web/JavaScript

http.request.headers
Map<Array<String>>
Header

HTTP リクエストヘッダーを Map(連想配列)で表します。

連想配列のキーは、HTTP リクエストヘッダー名を小文字にしたものです。

同じヘッダーが繰り返される場合、配列にはリクエストに出現した順で含まれます。

デコード: デコードなし
空白: 保持
非 ASCII: 保持

例:
any(http.request.headers["content-type"][*] == "application/json")

値の例:
{"content-type": ["application/json"]}

http.request.method
String
Request Method

HTTP メソッドを、大文字の文字列で返します。

値の例:
GET

http.request.timestamp.sec
Integer
Timestamp

Cloudflare がリクエストを受信した時刻です。Unix 時間(秒)で表し、10 桁です。

値の例:
1484063137

http.request.uri
String
URI

リクエストの URI パスとクエリ文字列です。

値の例:
/articles/index?section=539061&expand=comments

http.request.uri.args
Map<Array<String>>
(手動入力のみ)

リクエストに関連する HTTP URI 引数を Map(連想配列)で表します。

引数が繰り返される場合、配列にはリクエストに出現した順で複数の項目が含まれます。

値は前処理されず、リクエストで使われた元の大文字小文字を保持します。

デコード: デコードなし
非 ASCII: 保持

例:
any(http.request.uri.args["search"][*] == "red+apples")

値の例:
{"search": ["red+apples"]}

http.request.uri.args.names
Array<String>
(手動入力のみ)

HTTP URI クエリ文字列内の引数名です。名前は前処理されず、リクエストで使われた元の大文字小文字を保持します。

名前が繰り返される場合、配列にはリクエストに出現した順で複数の項目が含まれます。

デコード: デコードなし
非 ASCII: 保持

例:
any(http.request.uri.args.names[*] == "search")

値の例:
["search"]

http.request.uri.args.values
Array<String>
(手動入力のみ)

HTTP URI クエリ文字列内の引数の値です。値は前処理されず、リクエストで使われた元の大文字小文字を保持します。順序もリクエストと同じです。

重複する値は複数回リストされます。

デコード: デコードなし
非 ASCII: 保持

例:
any(http.request.uri.args.values[*] == "red+apples")

値の例:
["red+apples"]

http.request.uri.path
String
URI Path

リクエストの URI パスです。

値の例:
/articles/index

http.request.uri.query
String
URI Query

? 区切り文字を除いた、クエリ文字列全体です。

値の例:
section=539061&expand=comments

http.request.version
String
HTTP Version

使用している HTTP プロトコルのバージョンです。バージョンごとに異なるチェックが必要なときに使います。

値の例:

  • HTTP/1.1
  • HTTP/3

非プロキシ専用フィールド

トラフィックが Cloudflare 経由でプロキシされない場合、プロキシの有無に関係なく使えるフィールド に加え、次のフィールドも使えます。

フィールドExpression Builder での名前説明
dns.qry.name

Bytes

Query Name

問い合わせたクエリ名です。

値の例:


example.com.

dns.qry.name.len

Integer

Query Name Length

クエリ名の長さ(バイト)です。

値の例:


123

dns.qry.qu

Boolean

Question

true のとき、受信した DNS メッセージが質問であることを示します。

dns.qry.type

Integer

Query Type

DNS クエリタイプ

の数値です。

値の例:

  • 1 (A レコード)

  • 28 (AAAA レコード)

dns.rr.opt.client

Boolean

(

手動入力のみ

)

true のとき、DNS リクエストに EDNS Client Subnet(ECS)アドレスが含まれていたことを示します。

dns.rr.opt.client.addr

String

(

手動入力のみ

)

存在する場合、DNS リクエストとともに送られた ECS アドレスです。

値の例:


1.2.3.0

演算子とグループ化記号

  • 比較演算子 は、式が true を返すために、式で定義した値と実際の HTTP リクエスト値がどう関係するかを指定します。

  • 論理演算子 は、2 つの式を組み合わせて複合式を作り、評価の順序は優先順位で決まります。

  • グループ化記号 は、式を整理し、演算子の優先順位を強制し、式を入れ子にできます。

例と使い方は、Rules 言語ドキュメントの 演算子とグループ化記号 を参照してください。

役に立ちましたか?