高度なポリシー表現の基本要素
<prefix>.<operation> [<compound-operator> <prefix>.<operation>. . .]
-
\<prefix\>エクスプレッションを始めるためのアンカーポイントです。プレフィックスは、データ単位を識別するピリオドで区切られたキーです。たとえば、次のプレフィックスは、Content-Type という名前のヘッダーが存在するかどうかの HTTP リクエストを調べます。http.req.header("Content-Type")プレフィックスを単独で使用して、プレフィックスが識別するオブジェクトの値を返すこともできます。
-
\<operation\>プレフィックスで識別されるデータに対して実行される評価を指定します。たとえば、次の式を考えてみましょう。http.req.header("Content-Type").eq("text/html")この式では、演算子コンポーネントは次のとおりです。eq("text/html")この演算子により、NetScaler ADCはContent-Typeヘッダーを含むHTTPリクエストを評価し、特にこのヘッダーの値が文字列「text/html」と等しいかどうかを判断します。詳細については、「操作」を参照してください。
-
\<compound-operator>は、複数のプレフィックスまたはプレフィックス.operation要素から複合式を形成するブール演算子または算術演算子です。たとえば、次の式を考えてみましょう。http.req.header (「コンテンツタイプ」) .eq (「テキスト/html」) & http.req.url.contains (「.html」)
接頭辞
-
TCP/IP パケット内のクライアント IP アドレス
-
NetScaler システム時間
-
HTTP 経由の外部コールアウト
-
TCP または UDP レコードタイプ
-
クライアント:
-
次の例のように、リクエストを送信しているクライアントまたはレスポンスを受信しているクライアントの特性を識別します。
-
client.ip.dst というプレフィックスは、要求または応答の宛先 IP アドレスを指定します。
-
client.ip.src というプレフィックスは、送信元 IP アドレスを指定します。
-
-
HTTP:
-
次の例のように、HTTP リクエストまたはレスポンス内の要素を識別します。
-
プレフィックス http.req.body (integer) は、HTTP リクエストの本文を、整数で指定された文字位置までの複数行のテキストオブジェクトとして指定します。
-
プレフィックス http.req.header (「header_name」) は、header_name で指定されている HTTP ヘッダーを指定します。
-
プレフィックス http.req.url は URL エンコード形式の HTTP URL を指定します。
-
-
サーバー:要求を処理しているか、応答を送信しているサーバー内の要素を識別します。
-
システム:トラフィックを処理しているNetScalerの特性を識別します。注: DNS ポリシーは SYS、CLIENT、SERVER オブジェクトのみをサポートしていることに注意してください。さらに、NetScaler Gatewayでは、クライアントレスVPN機能は次の種類のプレフィックスを使用できます。
-
テキスト:リクエストまたはレスポンス内の任意のテキスト要素を識別します。
-
ターゲット:接続のターゲットを識別します。
-
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、システム、クライアント |
| コンテンツスイッチ | HTTP、システム、クライアント |
| 書き換え | HTTP、システム、クライアント、サーバー、URL、テキスト、ターゲット、VPN |
| 統合キャッシング | HTTP, SYS, CLIENT, SERVER |
| NetScaler Gateway、クライアントレスアクセス | HTTP、システム、クライアント、サーバー、URL、テキスト、ターゲット、VPN |
単一要素表現
-
true. 高度なポリシー表現には、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.header (「MyHDR」) .exists |
| EQ(<text>) | 特定の非数値がオブジェクトに存在します。以下がその例です:http.req.method.eq (投稿) |
| EQ(<integer>) | 特定の数値がオブジェクトに存在します。以下は例です:client.ip.dst.eq (10.100.10.100) |
| LT(<integer>) | オブジェクトの値が特定の値よりも小さい。以下がその例です:http.req.content_length.lt (5000) |
| GT(<integer>) | オブジェクトの値が特定の値よりも大きい。以下がその例です:http.req.content_length.gt (5) |
| 操作タイプ | 説明 |
|---|---|
| テキスト操作 | 個々の文字列や文字列のセットをターゲットの任意の部分と照合します。ターゲットは、文字列全体、文字列の先頭、または文字列の先頭と末尾の間にあるテキストの任意の部分です。たとえば、「XYZSomeText」から文字列「XYZ」を抽出できます。または、HTTP ヘッダー値をさまざまな文字列の配列と比較することもできます。テキストを別の種類のデータに変換することもできます。例としては、文字列を整数値に変換したり、URL 内のクエリ文字列からリストを作成したり、文字列を時間値に変換したりします。 |
| 数値演算 | 数値演算には、算術演算子の適用、コンテンツの長さの評価、リスト内の項目数、日付、時刻、および IP アドレスが含まれます。 |