コンテンツにスキップ

サポートされているフィールドとオペレーター

ロードバランシングルールでサポートされているフィールドは、Cloudflareがロードバランサーを通過するトラフィックをプロキシしているかどうかによって異なります。

誤ったフィールドセットを使用すると、予期しない動作が発生する可能性があります。最良の結果を得るためには、トラフィックのプロキシステータスに関連付けられたフィールドを使用してください。

また、一部のロードバランシングルールフィールドは、ロードバランシング式で説明されているように、式ビルダーで利用可能ですが、他のフィールドは手動で、APIまたは式エディタを介してのみ構成できます。

式ビルダーのフィールドセット

以下の表を参照して、式ビルダーで利用可能なフィールドがどのようにグループ化されているかを確認してください。

フィールドセット式ビルダー内のセクション説明
プロキシに関係なくサポートされているフィールドBOTHロードバランサーのプロキシステータスに関係なく常にアクセス可能な値。
プロキシ専用フィールドPROXIED ONLYロードバランサーがプロキシされているときにのみアクセス可能な値。
非プロキシ専用フィールドNON-PROXIED ONLYロードバランサーがプロキシされていないとき(DNS専用トラフィック)のみアクセス可能な値。

プロキシステータスヘッダーに基づいてロードバランサーフィールドを選択

プロキシに関係なくサポートされているフィールド

トラフィックのプロキシステータスに関係なく、ロードバランシングルールは以下のフィールドの値にアクセスできます:

フィールド式ビルダー内の名前説明
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

プロキシ専用フィールド

トラフィックがCloudflareを通じてプロキシされている場合、プロキシに関係なくサポートされているフィールドに加えて、以下のフィールドにアクセスできます:

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

フィールド式ビルダー内の名前説明
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リクエストヘッダーをマップ(または連想配列)として表します。

連想配列のキーは、小文字に変換された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引数をマップ(連想配列)として表します。

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

値は前処理されず、リクエストで使用された元のケースが保持されます。

デコード:デコードは行われません
非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を通じてプロキシされていない場合、プロキシに関係なくサポートされているフィールドに加えて、以下のフィールドにアクセスできます:

フィールド式ビルダーでの名前説明
dns.qry.name
Bytes
クエリ名

要求されたクエリ名を表します。

例の値:
example.com.

dns.qry.name.len
Integer
クエリ名の長さ

クエリ名のバイト数での長さを表します。

例の値:
123

dns.qry.qu
Boolean
質問

true の場合、このフィールドは受信したDNSメッセージが質問であったことを示します。

dns.qry.type
Integer
クエリタイプ

DNSクエリタイプの数値を表します。

例の値:

  • 1 (Aレコード)
  • 28 (AAAAレコード)
dns.rr.opt.client
Boolean
(手動入力のみ)

true の場合、このフィールドはEDNSクライアントサブネット (ECS) アドレスがDNSリクエストと共に送信されたことを示します。

dns.rr.opt.client.addr
String
(手動入力のみ)

存在する場合、このフィールドはDNSリクエストと共に送信されたECSアドレスを表します。

例の値:
1.2.3.0

演算子とグルーピングシンボル

  • 比較演算子 は、式で定義された値が実際のHTTPリクエスト値とどのように関連する必要があるかを指定し、式が真を返すための条件を定義します。

  • 論理演算子 は、2つの式を組み合わせて複合式を形成し、優先順位を使用して式がどのように評価されるかを決定します。

  • グルーピングシンボル は、式を整理し、演算子の優先順位を強制し、式をネストすることを可能にします。

例や使用法については、演算子とグルーピングシンボルを参照してください。