リライトおよびレスポンダーポリシー

最終公開日 : Oct 02, 2026
rewritepolicyカスタムリソース定義(CRD)を使用すると、Kubernetesネイティブ構成を使用してNetScaler®でリライトおよびレスポンダーポリシーを構成できます。これらのポリシーにより、リクエストとレスポンスの情報をリライトしたり、リクエストの特性に基づいてリクエストに応答したりできます。
rewritepolicy CRDは、次のようなシナリオで使用できます。
  • リクエストまたはレスポンスのURL、ホスト名、またはヘッダーをリライトする。
  • HTTPヘッダーを挿入、削除、または置換する。
  • リクエストを別のURLにリダイレクトする、カスタムペイロードで応答する、または接続をドロップしてリセットする。
  • ポリシー式でデータセット、パットセット、および文字列マップを参照する。
  • ポリシー決定で使用される情報を取得するために、外部エージェントへのHTTPコールアウトを行う。
rewritepolicy CRDは、ExtensionRefフィルターを介してaigatewayrouteから参照されるか、servicenamesまたはtargetRefを介してサービスに直接適用されます。
注:
rewrite-policiesまたはresponder-policiesの少なくともいずれか1つを指定する必要があります。

rewritepolicy CRDを展開する

rewritepolicy CRDをダウンロードし、次のコマンドを使用して展開します。
kubectl create -f https://raw.githubusercontent.com/netscaler/netscaler-k8s-ingress-controller/refs/heads/master/crd/rewrite-policy/rewrite-responder-policies-deployment.yaml
注:
CRD展開YAMLファイルを変更しないでください。

リライトポリシー CRD 属性

以下の表に、rewritepolicy CRD の spec で利用可能なトップレベルの属性を示します。
属性 説明 サポートされている値
ingressclass イングレスクラス。指定されていない場合、クラスター内のすべてのNetScaler Ingress Controllerがリソースを処理します。それ以外の場合、そのイングレスクラスを持つコントローラーのみがそれを処理します。 文字列
gatewayClassName このプロファイルが適用される GatewayClass の名前。 文字列
targetRef このプロファイルが適用されるターゲットリソースのリスト (name, namespace, group, kind, sectionName)。 配列
rewrite-policies リライトポリシーのリスト。 配列
responder-policies レスポンダーポリシーのリスト。 配列
dataset ポリシー式によって参照されるデータセットのリスト。 配列
patset ポリシー式によって参照されるパターンセットのリスト。 配列
stringmap ポリシー式によって参照される文字列マップのリスト。 配列
httpcallout_policy HTTPコールアウト設定のリスト。 配列

リライトポリシー

rewrite-policies の各エントリは、次の属性をサポートしています。rewrite-policy オブジェクトは必須です。
属性 説明 サポートされている値
servicenames リライトポリシーにバインドするサービスの名前。 文字列の配列(最大長127)
goto-priority-expression 現在のポリシーが TRUE と評価された場合に、次に評価するポリシーを指定する式または値。NEXT は次に高い優先度番号を持つポリシーを評価し、END はポリシー評価を終了します。デフォルトは END です。 文字列(最大長1499)
logpackets 監査メッセージアクションを追加します (logexpression, loglevel)。 オブジェクト
rewrite-policy リライトポリシーの定義。このオブジェクトは必須です。 オブジェクト
rewrite-policy オブジェクトは次の属性をサポートしています。rewrite-criteria、operation、target、および direction 属性は必須です。
属性 説明 サポートされる値
rewrite-criteria トラフィックが評価される式。必須。 文字列 (最大長 1299)
operation ユーザー定義のリライトアクションのタイプ。必須。 noop、delete、insert_http_header、delete_http_header、corrupt_http_header、insert_before、insert_after、replace、replace_http_res、delete_all、replace_all、insert_before_all、insert_after_all、およびその他のサポートされる操作
target リクエストまたはレスポンスのどの部分を書き換えるかを指定するデフォルト構文の式。必須。 文字列 (最大長 1229)
direction ポリシーをバインドするバインドポイント。必須。 REQUEST, RESPONSE
default-action ポリシー評価の結果が未定義 (UNDEF) の場合に実行するアクション。 NOREWRITE, RESET, DROP
modify-expression 挿入するコンテンツ、または指定された文字列を置き換えるコンテンツを指定するデフォルト構文の式。 文字列 (最大長 7991)
multiple-occurence-modify リクエストまたはレスポンス内の複数の文字列を照合するために使用される検索機能。 文字列 (最大長 171)
additional-multiple-occurence-modify 検索結果を絞り込むための追加条件。extend(m,n) 操作で始まります。 文字列 (最大長 1299)
comment このリライトポリシーに関する情報を保持するためのコメント。 文字列 (最大長 255)

レスポンダーポリシー

responder-policies の各エントリは、次の属性をサポートしています。responder-policy オブジェクトは必須です。
属性 説明 サポートされている値
servicenames レスポンダーポリシーにバインドするサービスの名前。 文字列の配列 (最大長 127)
goto-priority-expression 現在のポリシーが TRUE と評価された場合に、評価する次のポリシーを指定する式または値。デフォルトは END です。 文字列 (最大長 1499)
logpackets 監査メッセージアクションを追加します (logexpression, loglevel)。 オブジェクト
responder-policy レスポンダーポリシーの定義。このオブジェクトは必須です。 オブジェクト
responder-policy オブジェクトは次の属性をサポートします。respond-criteria 属性は必須であり、redirect、respondwith、noop、reset、または drop のいずれか1つを指定する必要があります。
属性 説明 サポートされる値
respond-criteria ポリシーがリクエストに応答するかどうかを決定するために使用するデフォルト構文の式。必須。 文字列 (最大長 1299)
redirect ポリシーに一致した場合にリクエストをリダイレクトする (url 必須, redirect-status-code, redirect-reason)。 オブジェクト
respondwith ポリシーに一致した場合にリクエストに応答する (http-payload-string 必須)。 オブジェクト
noop リクエストに応答する代わりに、保護されたサーバーにリクエストを送信します。 オブジェクト
reset リクエストがポリシーに一致した場合、クライアント接続を閉じてリセットします。 オブジェクト
drop ポリシーに一致した場合、応答を送信せずにリクエストを破棄します。 オブジェクト
default-action ポリシー評価の結果が未定義 (UNDEF) の場合に実行するアクション。 NOOP, RESET, DROP
comment このレスポンダーポリシーに関する情報を保持するためのコメント。 文字列 (最大長 255)

データセット

dataset の各エントリは、次の属性をサポートしています。name、type、および values 属性は必須です。
属性 説明 サポートされている値
name データセットの名前。 文字列 (最大長 32)
type データセットにバインドする値のタイプ。 ipv4, number, ipv6, ulong, double, mac
values このデータセットに関連付けられた、指定された型の値。 文字列の配列
comment このデータセットに関する情報を保持するためのコメント。 文字列(最大長255)

パットセット

patset の各エントリは、次の属性をサポートしています。name および values 属性は必須です。
属性 説明 サポートされている値
name パットセットの名前。 文字列(最大長32)
values このパットセットに関連付けられたパターンを構成する文字列。 文字列の配列
comment このパットセットに関する情報を保持するためのコメント。 文字列 (最大長 255)

文字列マップ

stringmap の各エントリは、次の属性をサポートします。name および values 属性は必須です。
属性 説明 サポートされる値
name 文字列マップの名前。 文字列 (最大長 32)
values この文字列マップにバインドするキーと値のペアのリスト。各ペアにはkeyとvalueがあります (それぞれ最大長2047文字)。 オブジェクトの配列
comment この文字列マップに関する情報を保持するためのコメント。 文字列 (最大長255)

HTTPコールアウト

httpcallout_policyの各エントリは、次の属性をサポートしています。name、server_ip、およびserver_port属性は必須です。
属性 説明 サポートされている値
name HTTPコールアウト名。 文字列 (最大長32)
server_ip コールアウトが送信されるコールアウトエージェントサーバーのIPアドレス。 文字列
server_port コールアウトエージェントサーバーのポート。 整数 (1~65535)
http_method HTTPリクエストで使用されるメソッド。デフォルトはGETです。 GET, POST
host_expr Hostヘッダーを設定するための文字列式。完全なHTTPリクエスト式とは相互排他的です。 文字列 (最大長 255)
url_stem_expr URLステムを生成するための文字列式。 文字列 (最大長 8191)
headers HTTPリクエストに挿入する1つ以上のヘッダー (name, expr)。最大8つのヘッダー。 オブジェクトの配列
parameters リクエストに挿入する1つ以上のクエリパラメータ (name, expr)。 オブジェクトの配列
body_expr リクエストのボディを生成するための高度な文字列式。 文字列
full_req_expr NetScalerがコールアウトエージェントに送信する、式としての正確なHTTPリクエスト。 文字列
scheme コールアウトサーバーのスキーム。デフォルトは HTTP です。 HTTP, HTTPS
cache_for_secs コールアウト応答がキャッシュされる期間(秒単位)。 整数 (1~31536000)
return_type コールアウトエージェントが返すデータのタイプ。TEXT は値をテキストとして、NUM は数値として、BOOL はブール値として扱います。 TEXT, NUM, BOOL
result_expr 応答からコールアウト結果を抽出する式。応答ベースの式である必要があります (HTTP.RES で始まります)。 文字列 (最大長 8191)
comment このHTTPコールアウトに関する情報を保持するためのコメント。 文字列 (最大長 255)

ポリシー構成の記述方法

rewritepolicy YAML定義で、kind を rewritepolicy に設定します。spec セクションで、次のセクションを1つ以上追加します: rewrite-policies、responder-policies、dataset、patset、stringmap、および httpcallout_policy。
次のガイドラインに留意してください。
  • rewrite-policies または responder-policies の少なくともいずれか1つを指定します。
  • リライトポリシーの場合、rewrite-criteria、operation、target、および direction 属性は必須です。
  • レスポンダーポリシーの場合、respond-criteria属性は必須であり、redirect、respondwith、noop、reset、またはdropのいずれか1つのアクションを正確に指定する必要があります。
  • rewritepolicy CRDをExtensionRefフィルターを介してaigatewayrouteにアタッチするか、またはservicenamesまたはtargetRefを介してサービスにバインドします。

ポリシー構成の例

応答ヘッダーを追加するリライトポリシー

次の構成は、HTTP応答にカスタムヘッダーを挿入します。
apiVersion: citrix.com/v1
kind: rewritepolicy
metadata:
  name: add-response-header
  namespace: default
spec:
  rewrite-policies:
  - servicenames:
    - ai-backend-service
    rewrite-policy:
      operation: insert_http_header
      target: "x-ai-gateway"
      modify-expression: "\"netscaler\""
      rewrite-criteria: "HTTP.RES.IS_VALID"
      direction: RESPONSE
      comment: "Add AI gateway response header"

リクエストをリダイレクトするレスポンダーポリシー

次の構成は、一致するリクエストを別のURLにリダイレクトします。
apiVersion: citrix.com/v1
kind: rewritepolicy
metadata:
  name: redirect-policy
  namespace: default
spec:
  responder-policies:
  - servicenames:
    - ai-backend-service
    responder-policy:
      redirect:
        url: "\"https://backup.example.com\" + HTTP.REQ.URL"
        redirect-status-code: 302
      respond-criteria: "HTTP.REQ.URL.CONTAINS(\"/deprecated\")"
      comment: "Redirect deprecated endpoint"

カスタム応答を持つレスポンダーポリシー

次の構成は、カスタムペイロードを使用して、一致するリクエストに直接応答します。
apiVersion: citrix.com/v1
kind: rewritepolicy
metadata:
  name: block-policy
  namespace: default
spec:
  responder-policies:
  - servicenames:
    - ai-backend-service
    responder-policy:
      respondwith:
        http-payload-string: "\"HTTP/1.1 429 Too Many Requests\\r\\n\\r\\nRate limit exceeded\""
      respond-criteria: "HTTP.REQ.HEADER(\"x-ai-eg-model\").EQ(\"restricted-model\")"
      comment: "Block restricted model requests"

データセットを持つリライトポリシー

次の構成は、データセットを定義し、それをリライトポリシーで使用します。
apiVersion: citrix.com/v1
kind: rewritepolicy
metadata:
  name: dataset-policy
  namespace: default
spec:
  dataset:
  - name: blocked_ips
    type: ipv4
    values:
    - "192.0.2.1"
    - "192.0.2.2"
  responder-policies:
  - servicenames:
    - ai-backend-service
    responder-policy:
      drop: {}
      respond-criteria: "CLIENT.IP.SRC.EQUALS_ANY(\"blocked_ips\")"
      comment: "Drop requests from blocked IPs"

関連資料