ADC
ご意見をお寄せいただきありがとうございました

この記事は機械翻訳されています.免責事項

HTTP コールアウトの再帰を回避

NetScalerアプライアンスはHTTPコールアウトリクエストの有効性をチェックしませんが、リクエストをHTTPコールアウトエージェントに送信する前にリクエストを一度解析します。この解析により、アプライアンスはコールアウトリクエストを他の着信リクエストと同様に扱うことができるため、コールアウトリクエストを処理するようにいくつかの便利なNetScaler機能(統合キャッシュなど)を構成できます。

ただし、この解析中、HTTP コールアウト要求は同じポリシーを選択し、それ自体を再帰的に呼び出すことができます。アプライアンスは再帰呼び出しを検出し、未定義(UNDEF)条件を発生させます。ただし、再帰呼び出しにより、ポリシーおよび HTTP コールアウト選択カウンタは、それぞれ 1 カウントではなく、2 カウントずつ増加します。

コールアウトが自身を呼び出さないようにするには、HTTPコールアウト・リクエストの一意の特性を少なくとも1つ特定し、この特性を持つすべてのリクエストを、コールアウトを呼び出すポリシールールによって処理されないようにする必要があります。そのためには、ポリシールールに別の Advanced ポリシー式を含めます。SYS.HTTP_CALLOUT(<name>)式は、コールアウト式が評価される前に評価されるように、式の前に式を付ける必要があります。例:

<Expression that prevents callout recursion> OR SYS.HTTP_CALLOUT(<name>)

この方法でポリシールールを設定すると、アプライアンスが要求を生成して解析すると、複合ルールは FALSE と評価され、コールアウトは 2 回目に生成されず、選択カウンタが正しく増分されます。

HTTP コールアウト要求に一意の特性を割り当てる 1 つの方法は、コールアウトを設定するときに一意のカスタム HTTP ヘッダーを含めることです。以下は、「MyCallout」と呼ばれる HTTP コールアウトの例です。コールアウトは、クライアントの IP アドレスがブラックリストに登録された IP アドレスのデータベースに存在するかどうかをチェックする HTTP 要求を生成します。コールアウトには「Request」というカスタムヘッダーが含まれ、値「Callout Request」に設定されています。グローバルにバインドされたレスポンダーポリシー「Pol1」は HTTP コールアウトを呼び出しますが、Request ヘッダーがこの値に設定されているすべてのリクエストを除外します。これにより、myCallout の 2 回目の呼び出しが防止されます。2回目の呼び出しを防ぐ式は、HTTP.REQ.HEADER(“Request”).EQ(“Callout Request”).NOTです。

> add policy httpCallout myCallout Done > set policy httpCallout myCallout -IPAddress 10.102.3.95 -port 80 -returnType TEXT -hostExpr ""10.102.3.95"" -urlStemExpr ""/cgi-bin/check_clnt_from_database.pl"" -headers Request("Callout Request") -parameters cip(CLIENT.IP.SRC) -resultExpr "HTTP.RES.BODY(100)" Done > add responder policy Pol1 "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(myCallout).CONTAINS("IP Matched")" RESET Done > bind responder global Pol1 100 END -type OVERRIDE Done

注: リクエスト URL に HTTP コールアウト用に設定されたステム式が含まれているかどうかを確認する式を設定することもできます。このソリューションを実装するには、HTTP コールアウトエージェントが HTTP コールアウトにのみ応答でき、アプライアンスを介して送信される他の要求には応答できないようにします。HTTP コールアウトエージェントが他のクライアント要求を処理するアプリケーションまたは Web サーバーである場合、そのような式により、アプライアンスはそれらのクライアント要求を処理できません。代わりに、前述のように一意のカスタムヘッダーを使用します。

このコンテンツの正式なバージョンは英語で提供されています。Cloud Software Groupドキュメントのコンテンツの一部は、お客様の利便性のみを目的として機械翻訳されています。Cloud Software Groupは機械翻訳されたコンテンツを管理していないため、誤り、不正確な情報、不適切な用語が含まれる場合があります。英語の原文から他言語への翻訳について、精度、信頼性、適合性、正確性、またはお使いのCloud Software Group製品またはサービスと機械翻訳されたコンテンツとの整合性に関する保証、該当するライセンス契約書またはサービス利用規約、あるいはCloud Software Groupとのその他すべての契約に基づき提供される保証、および製品またはサービスのドキュメントとの一致に関する保証は、明示的か黙示的かを問わず、かかるドキュメントの機械翻訳された範囲には適用されないものとします。機械翻訳されたコンテンツの使用に起因する損害または問題について、Cloud Software Groupは責任を負わないものとします。
HTTP コールアウトの再帰を回避