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

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

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

Citrix ADCアプライアンスはHTTPコールアウト要求の有効性をチェックしませんが、要求をHTTPコールアウトエージェントに送信する前に一度解析します。この解析により、アプライアンスはコールアウト要求を他の着信要求として処理できます。これにより、コールアウト要求に対して機能するように、いくつかの便利なCitrix ADC機能(統合キャッシュなど)を設定できます。

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

コールアウトがコールアウト自体を呼び出さないようにするには、HTTP コールアウトリクエストの一意な特性を少なくとも 1 つ指定し、コールアウトを呼び出すポリシールールによってこの特性を持つすべてのリクエストが処理されないようにする必要があります。そのためには、ポリシールールに別の既定の構文式を含めます。式は、コールアウト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 (「リクエスト」) .EQ (「コールアウト要求」) です。

:

> 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コールアウト用に設定されたstem式が含まれているかどうかを確認する式を設定することもできます。ソリューションを実装するには、HTTP コールアウトエージェントが HTTP コールアウトにのみ応答し、アプライアンスを経由する他の要求には応答しないようにします。HTTP コールアウトエージェントが他のクライアント要求を処理するアプリケーションまたは Web サーバーである場合、このような式により、アプライアンスはこれらのクライアント要求を処理できなくなります。代わりに、前述のように一意のカスタムヘッダーを使用します。

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