Citrix ADC

HTTP コールアウトの設定

HTTP コールアウトを設定するときは、リクエストのタイプ(HTTP または HTTPS)、送信先、およびリクエストの形式を指定します。応答の期待される形式、および最後に分析する応答の部分。

宛先には、HTTP コールアウトエージェントの IP アドレスとポートを指定します。または、負荷分散、コンテンツスイッチング、またはキャッシュリダイレクト仮想サーバーを使用して、HTTP コールアウト要求を管理します。

最初のケースでは、HTTP コールアウト要求は HTTP コールアウトエージェントに直接送信されます。2 番目のケースでは、HTTP コールアウト要求は、指定された仮想サーバーの仮想 IP アドレス (VIP) に送信されます。仮想サーバーは、クライアント要求を処理するのと同じ方法で要求を処理します。たとえば、多数のコールアウトが生成されることが予想される場合、HTTP コールアウトエージェントのインスタンスを複数のサーバーで構成し、これらのインスタンスを (サービスとして) 負荷分散仮想サーバーにバインドし、HTTP コールアウト設定で負荷分散仮想サーバーを指定できます。次に、負荷分散仮想サーバーは、負荷分散アルゴリズムによって決定された設定済みインスタンスの負荷を分散します。

HTTP コールアウト要求の形式については、HTTP コールアウト要求の個々の属性(属性ベースの HTTP コールアウト)を指定するか、HTTP コールアウト要求全体を高度なポリシー式(式ベースの HTTP コールアウト)として指定できます。

HTTP コールアウト要求の形式については、HTTP コールアウト要求の個々の属性(属性ベースの HTTP コールアウト)を指定するか、HTTP コールアウト要求全体を高度なポリシー式(式ベースの HTTP コールアウト)として指定できます。

詳細については、「 ポリシー httpCallout」を参照してください。

パラメーター 説明
名前 コールアウトの名前 (最大 127 文字)
IP アドレスとポート (IP アドレス/ポート) または仮想サーバー名 (vserver) コールアウトの送信先サーバーの IPv4 または IPv6 アドレス、またはワイルドカード、およびコールアウトの送信先サーバー上のポート、またはワイルドカード。または、サービスタイプが HTTP の負荷分散、コンテンツスイッチング、またはキャッシュリダイレクト仮想サーバーの名前。
HTTPメソッド (httpMethod) HTTPメソッド (httpMethod)。このコールアウトが送信する HTTP リクエストで使用されるメソッド。有効な値:GET または POST。デフォルト:GET。
ホスト式 (HostExpr) ホスト式 (HostExpr)。Host ヘッダーを構成するための高度なテキスト式。最大長:255。式はリテラル値でも、値を導き出す高度な式でもかまいません。例: “10.101.10.11” , “http.req.header(“Host”)”
URLステム式 (urlStemExpr) URL ステム式 (urlStemExpr) URL ステムを生成するための高度な文字列式です。最大長:8191. 式には、リテラル文字列または値を導出する式を指定できます。例:”“/mysite/index.html”” “http.req.url”
HTTP ヘッダー (ヘッダー) HTTP ヘッダー (ヘッダー)。HTTP コールアウトリクエストに HTTP ヘッダーとその値を挿入するための高度なテキスト式。すべてのヘッダーに値を指定します。ヘッダー名を文字列として指定し、ヘッダー値を高度な式として指定します。ヘッダーをスペースで区切って指定します。-headers cip (client.ip.src) hdr (http.req.header (「HDR」)) など。ヘッダーの数は 8 にすることができます。
サーバーに送信する式ベースの要求 (fullReqExpr) Citrix ADCが8191文字の高度な式として送信する正確なHTTPリクエスト。このパラメータを指定する場合は、HttpMethod、HostExpr、urlStemExpr、ヘッダー、およびパラメーターの引数を省略する必要があります。リクエスト式は、コールアウトが使用されるフィーチャによって制約されます。たとえば、HTTP.RES 式は、要求時ポリシーバンクまたは TCP コンテンツスイッチングポリシーバンクでは使用できません。
サーバーに送信する式ベースの要求 (BodyExpr) リクエストの本文を生成するための高度な文字列式。式には、リテラル文字列または値を導出する式 (client.ip.src など) を含めることができます。-fullReqExpr と相互に排他的です。
パラメーター コールアウトが送信する HTTP リクエストにクエリパラメータを挿入するための高度な式。設定するすべてのパラメータの値を指定します。コールアウトリクエストが GET メソッドを使用する場合、これらのパラメーターは URL に挿入されます。コールアウトリクエストが POST メソッドを使用する場合、これらのパラメータは POST 本文に挿入されます。クエリパラメータ名を文字列として、値を高度な式として設定します。パラメータ値は URL エンコードされます。パラメータをスペースで区切って指定します ፦パラメータ name1 (「name1」) name2 (http.req.header (「hdr」))。最大 8 つのパラメータを設定できます。
戻り値の型 (ReturnType) ターゲットアプリケーションがコールアウトへの応答で返すデータのタイプ。有効な値:TEXT: 戻り値をテキスト文字列として扱います。NUM: 戻り値を数値として扱います。BOOL: 戻り値をブール値として扱います。注意:戻り値の型は、設定後に変更できません。
レスポンスからデータを抽出する式 (ResultExpr) HTTP コールアウトへの応答から HTTP.RES オブジェクトを抽出する高度な式。最大長は 8191 です。この式の操作は、戻り値の型と一致する必要があります。たとえば、戻り値の種類のテキストを構成する場合、結果式はテキストベースの式である必要があります。戻り値の型が num の場合、結果式 (resultExpr) は次のような数値を返す必要があります。「http.res.body (10000) .length」注:場合によっては、戻り値の型を TEXT に設定し、サーバーから送信される結果が 16 KB を超えると、結果式が NULL を返すことがあります。たとえば、結果が 16 KB を超える連結文字列になった場合などです。
スキーム コールアウトサーバーのスキームのタイプ。例:HTTP, https
cacheForsecs コールアウト応答がキャッシュされる期間(秒)。キャッシュされた応答は、「calloutContentGroup」という名前の統合キャッシュコンテンツグループに保存されます。デュレーションが設定されていない場合、通常のキャッシュ構成を使用してキャッシュしない限り、コールアウト応答はキャッシュされません。このパラメータは、これらの応答に適用される通常のキャッシュ設定よりも優先されます。

:アプライアンスはリクエストの有効性をチェックしません。リクエストが有効なリクエストであり、機密情報が含まれていないことを確認する必要があります。正しくないまたは不完全な HTTP コールアウト構成は、アクションに関連付けられていない実行時 UNDEF 条件になります。UNDEF 条件は、未定義のヒットカウンタを更新するだけで、誤って設定された HTTP コールアウトをトラブルシューティングできます。ただし、アプライアンスはHTTPコールアウト要求を解析して、コールアウトの特定のCitrix ADC機能を構成できるようにします。これにより、HTTP コールアウトが自身を呼び出す可能性があります。コールアウトの再帰とその回避方法については、「 HTTP コールアウトの再帰を回避する」を参照してください。

最後に、HTTP 要求属性を使用するか、式を使用して HTTP コールアウト要求の形式を定義するかに関係なく、HTTP コールアウトエージェントからの応答の形式と、評価する応答の部分を指定する必要があります。レスポンスタイプには、ブール値、数値、またはテキストを使用できます。この戻り値の型だけに基づいて、コールアウト応答でさらにエクスプレッションメソッドを使用できます。戻り値の型が数値の場合、コールアウト応答で数値ベースの式を使用できます。評価する応答の部分は、式によって指定されます。たとえば、応答にテキストが含まれるように指定した場合、 HTTP.RES.BODY(<unit>)を使用して、アプライアンスがコールアウトエージェントからの応答の最初の<unit>バイトのみを評価するように指定できます。

コマンドラインでは、最初に add コマンドを使用して HTTP コールアウトを作成します。コールアウトを追加すると、デフォルト値の GET に設定された HTTP メソッドを除き、すべてのパラメータがデフォルト値の NONE に設定されます。次に、set コマンドを使用してコールアウトのパラメータを設定します。set コマンドは、両方のタイプのコールアウト(属性ベースとエクスプレッションベース)を設定するために使用します。違いは、2 種類のコールアウトを設定するために使用されるパラメータにあります。したがって、次のコマンドライン手順には、属性ベースのコールアウトを設定するための set コマンドと、式ベースのコールアウトを設定するための set コマンドが含まれます。構成ユーティリティでは、これらの構成タスクはすべて 1 つのダイアログボックスで実行されます。

注:HTTP コールアウトをポリシーに入れる前に、戻り値のタイプを除くすべての設定済みパラメータを変更できます。HTTP コールアウトがポリシー内にあると、コールアウトで設定されている式を完全に変更することはできません。たとえば、クライアント.IP.SRC に HTTP.REQ ヘッダー (「マイバル」) を変更することはできません。式に渡される演算子と引数は変更できます。たとえば、HTTP.REQ.HEADER("myVal1")HTTP.REQ.HEADER("myVal2")にまたはHTTP.REQ.HEADER("myVal")HTTP.REQ.HEADER("myVal").AFTER_STR(<string>)に変更できます。set コマンドが失敗した場合は、HTTP コールアウトを作成します。

HTTP コールアウトの設定には、高度なポリシー式の設定が含まれます。高度なポリシー式の設定の詳細については、「高度なポリシー式の設定:はじめに」を参照してください。

コマンドラインインターフェイスを使用して HTTP コールアウトを構成するには

コマンドプロンプトで、次の操作を行います。

HTTP コールアウトを作成します。

add policy httpCallout <name> [-IPAddress <ip_addr|ipv6_addr>] [-port<port>] [-vServer <string>] [-returnType <returnType>] [-httpMethod (GET | POST )] [-hostExpr <expression>]  [-urlStemExpr <expression>] [-headers <name(value)> ...] [-parameters <name(value)> ...] [-bodyExpr <expression>] [-fullReqExpr <expression>] [-scheme ( http | https )] [-resultExpr <expression>] [-cacheForSecs <secs>] [-comment <string>]

<!--NeedCopy-->

:


add policy httpCallout mycallout -vserver lbv1 -returnType num -httpMethod GET -hostExpr 'http.req.header("Host")'-urlStemExpr "http.req.url" -parameters Name("My Name") -headers Name("MyHeader")-resultExpr "http.res.body(10000).length"

<!--NeedCopy-->

HTTP コールアウトの設定を変更します。

set policy httpCallout <name> [-IPAddress <ip_addr|ipv6_addr|\*>] [-port <port|\*>] [-vServer <string>] [-returnType <returnType>] [-httpMethod ( GET | POST )] [-hostExpr <string>] [-urlStemExpr <string>] [-headers <name(value)> ...] [-parameters <name(value)> ...] [-resultExpr <string>]

<!--NeedCopy-->

:

> set policy httpCallout mycallout -vserver lbv1 -returnType num -httpMethod GET -hostExpr 'http.req.header("Host")'-urlStemExpr "http.req.url" -parameters Name("My Name") -headers Name("MyHeader") -resultExpr "http.res.body(10000).length"
<!--NeedCopy-->

FullReqExpr パラメータを使用して HTTP コールアウトを構成します。

set policy httpCallout <name> [-vServer <string>] [-returnType <returnType>] [-fullReqExpr <string>] [-resultExpr <string>]
<!--NeedCopy-->

:


> set policy httpCallout mycallout1 -vserver lbv1 -returnType num fullReqExpr q{"GET " + http.req.url + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1) + "r\nHost:10.101.10.10\r\nAccept: \*/\*\r\n\r\n"}

<!--NeedCopy-->

HTTP コールアウトの設定を確認します。


show policy httpCallout `<name>`

sh policy httpCallout mycallout1
> Name: mycallout1
>Vserver: lbv1 (UP)
Effective Vserver state: UP
Return type: TEXT
Scheme: HTTP
Full REQ expr: "GET " + http.req.url + "HTTP/" + http.req.version.major + "." + http.req.version.minor.sub(1)+ "r\nHost:10.101.10.10\r\nAccept: \*/\*\r\n\r\n"
Result expr: http.res.body(100)
Hits: 0
Undef Hits: 0
Done
>

<!--NeedCopy-->

構成ユーティリティを使用して HTTP コールアウトを構成するには

  1. AppExpert > HTTP コールアウトに移動します
  2. 詳細ペインで、[Add] をクリックします。
  3. [ HTTP コールアウトの作成 ] ダイアログボックスで、HTTP コールアウトのパラメータを設定します。パラメータの説明については、チェックボックスの上にマウスカーソルを合わせます。
  4. [Create] をクリックしてから、[Close] をクリックします。 HTTP コールアウトを構成する
HTTP コールアウトの設定