高度なポリシー式の基本要素
<prefix>.<operation> [<compound-operator> <prefix>.<operation>. . .]
-
\<prefix>は、式を開始するためのアンカーポイントです。プレフィックスは、データの単位を識別するピリオドで区切られたキーです。たとえば、次のプレフィックスは、HTTP リクエストで Content-Type という名前のヘッダーが存在するかどうかを調べます。http.req.header("Content-Type")プレフィックスを単独で使用して、プレフィックスが識別するオブジェクトの値を返すこともできます。
-
\<operation>は、プレフィクスで識別されるデータに対して実行される評価を示します。たとえば、次の式を考えます。http.req.header("Content-Type").eq("text/html")この式では、演算子コンポーネントは次のとおりです。eq("text/html")この演算子により、Citrix ADCはContent-Typeヘッダーを含むHTTPリクエストを評価し、特にこのヘッダーの値が文字列「text/html」と等しいかどうかを判断します。詳細については、「操作」を参照してください。
-
\<compound-operator>は、複数のプレフィックスまたは prefix.operation 要素から複合式を形成するブール演算子または算術演算子です。たとえば、次の式を考えます。http.req.header("Content-Type").eq("text/html") && http.req.url.contains(".html")
プレフィックス
-
TCP/IP パケット内のクライアント IP アドレス
-
Citrix ADCシステム時刻
-
HTTP 経由の外部コールアウト
-
TCP または UDP レコードタイプ
-
CLIENT:
-
次の例のように、要求を送信しているクライアントまたは応答を受信しているクライアントの特性を識別します。
-
プレフィクス client.ip.dst は、要求または応答の宛先 IP アドレスを指定します。
-
プレフィクス client.ip.src は、送信元 IP アドレスを指定します。
-
-
HTTP:
-
次の例のように、HTTP リクエストまたはレスポンス内の要素を識別します。
-
プレフィックス http.req.body(整数)は、HTTP リクエストの本文を複数行テキストオブジェクトとして指定します。整数で指定された文字位置までです。
-
プレフィックス http.req.header(「ヘッダー名」)は、ヘッダー名で指定されたHTTPヘッダーを指定します。
-
プレフィックス http.req.url は、URL エンコード形式の HTTP URL を指定します。
-
-
SERVER:要求を処理中または応答を送信しているサーバー内の要素を識別します。
-
SYS:トラフィックを処理しているCitrix ADCの特性を識別します。注: DNSポリシーは、SYS、CLIENT、およびSERVERオブジェクトのみをサポートします。さらに、Citrix Gateway では、クライアントレスVPN機能は次の種類のプレフィックスを使用できます。
-
TEXT:リクエストまたはレスポンス内のテキストエレメントを識別します。
-
TARGET:接続のターゲットを識別します。
-
URL:HTTP リクエストまたはレスポンスの URL 部分の要素を識別します。
http.res.header.("myheader")
http.res.header.("myheader").exists
http.req.url.length + http.req.cookie.length <= 500
| 機能 | 機能で使用される式プレフィックスのタイプ |
|---|---|
| DNS | SYS, CLIENT, SERVER |
| 保護機能のレスポンダー | HTTP, SYS, CLIENT |
| コンテンツ スイッチ | HTTP, SYS, CLIENT |
| リライト | HTTP, SYS, CLIENT, SERVER, URL, TEXT, TARGET, VPN |
| 統合キャッシング | HTTP, SYS, CLIENT, SERVER |
| Citrix Gateway、クライアントレスアクセス | HTTP, SYS, CLIENT, SERVER, URL, TEXT, TARGET, VPN |
単一要素式
-
本当です。詳細ポリシー式は、単に true という値で構成できます。このタイプの式は、常に TRUE の値を返します。これは、ポリシーアクションを連鎖させ、Goto 式をトリガーする場合に便利です。
-
偽です。詳細ポリシー式は、単に false という値で構成できます。このタイプの式は、常に FALSE の値を返します。
-
複合式のプレフィックス。たとえば、プレフィックス HTTP.REQ.HOSTNAME はホスト名を返す完全な式で、HTTP.REQ.URL は URL を返す完全な式です。プレフィックスは、演算および追加のプレフィックスと組み合わせて使用して、複合式を形成することもできます。
操作
http.req.url
-
URL 内の特定のホスト名を検索します。
-
URL 内の特定のパスを検索します。
-
URL の長さを評価します。
-
タイムスタンプを示す文字列を URL で検索し、GMT に変換します。
http.res.header("Server").contains("IIS")
http.req.hostname.eq("www.mycompany.com")
式プレフィックスの基本的な操作
| 操作 | 判断内容 |
|---|---|
| CONTAINS(<string>) | オブジェクトが一致します <string>。以下は例です:http.req.header(「キャッシュ制御」).contains(「キャッシュなし」) |
| EXISTS | 特定の項目がオブジェクト内に存在します。以下は例です:http.res.ヘッダー(「MyHdr」).exists |
| EQ(<text>) | 特定の非数値値がオブジェクトに存在します。以下に例を示します。 |
| EQ(<integer>) | 特定の数値はオブジェクトに存在します。次に、クライアント.ip.dst.eq (10.100.10.100) の例を示します。 |
| LT(<integer>) | オブジェクトの値が特定の値より小さい場合。以下は例である。コンテンツの長さの例 (5000) |
| GT(<integer>) | オブジェクトの値が特定の値よりも大きい。以下に例を示します。内容の長さ.gt (5) |
| 操作タイプ | 説明 |
|---|---|
| テキスト操作 | 個々の文字列と文字列のセットを、ターゲットの任意の部分と一致させます。ターゲットには、文字列全体、文字列の先頭、または文字列の先頭と末尾の間のテキストの任意の部分を指定できます。たとえば、「XYZSomeText」から文字列「XYZ」を抽出できます。または、HTTP ヘッダー値を異なる文字列の配列と比較することもできます。テキストを別の種類のデータに変換することもできます。例を次に示します。文字列を整数値に変換し、URL 内のクエリ文字列からリストを作成し、文字列を時間値に変換します。 |
| 数値演算 | 数値演算には、算術演算子の適用、コンテンツの長さの評価、リスト内の項目数、日付、時刻、および IP アドレスが含まれます。 |