Sun GlassFish Enterprise Server 2.1 高可用性 (HA) 管理ガイド

proxyHandler プロパティー

Enterprise Server のプロキシハンドラは、プロキシサーバー (この場合はロードバランサ) によって遮断されてサーバーに転送された元のクライアント要求に関する情報を取得し、クライアント要求のターゲットである配備された Web アプリケーションでこの情報を使用できるようにする役目を担っています。遮断するプロキシサーバーが SSL の終端となる場合、プロキシハンドラは、元の要求が HTTPS 要求であったのか、SSL クライアント認証が有効なのかなど元の要求に関する追加の情報を取得して使用可能にします。proxyHandler プロパティーは、authPassThroughEnabled が true に設定されている場合のみ使用します。

プロキシハンドラは、プロキシサーバーが元のクライアント要求に関する情報を伝達するのに使用するカスタムな要求ヘッダーについて着信要求を調べ、標準の ServletRequest API を使用してこの情報を Web アプリケーションで使用できるようにします。

プロキシハンドラの実装は、proxyHandler プロパティーを使用して、HTTP サービスレベルでグローバルに設定することも、個別の HTTP リスナーに対して設定することもできます。このプロパティーの値は、com.sun.appserv.ProxyHandler 抽象クラスの実装の完全修飾クラス名を指定します。設定可能なプロキシハンドラの実装が、HTTP 要求ヘッダー名について認識し、プロキシサーバーが元のクライアント要求に関する情報を伝達するのに使用する値の書式を理解しているかぎり、プロキシハンドラの実装によってサーバーは任意のプロキシサーバーで動作できます。

Enterprise Server のプロキシハンドラは、要求ヘッダーから SSL 証明書チェーンを読み込んで解析します。これによって、バックエンドのインスタンスは、SSL 終端となるプロキシサーバー (ここではロードバランサ) によって遮断された元のクライアント要求に関する情報を取得できるようになります。デフォルトのプロキシハンドラ設定を使用することも、HTTP サービスまたは HTTP/HTTPS リスナーの proxyHandler プロパティーを使用してユーザー設定することもできます。proxyHandler プロパティーでは、そのリスナーまたはすべてのリスナーによって使用される com.sun.appserv.ProxyHandler 抽象クラスのカスタム実装の完全修飾クラス名を指定します。

この抽象クラスの実装は、インスタンスへの元のクライアント要求に関する情報を伝達するためにプロキシサーバーが使用するカスタム要求ヘッダーに対して行われる特定の要求を調べ、その情報を呼び出し元に返します。デフォルトの実装では、Proxy-ip という名前の HTTP 要求ヘッダーからクライアント IP アドレスを、Proxy-keysize という名前の HTTP 要求ヘッダーから SSL キーサイズを、Proxy-auth-cert という名前の HTTP 要求ヘッダーから SSL クライアント証明書チェーンを読み取ります。Proxy-auth-cert 値には、BEGIN CERTIFICATE および END CERTIFICATE の境界がなく、\n% d% a によって置き換えられた BASE-64 エンコードのクライアント証明書チェーンを含む必要があります。

このプロパティーは、authPassThroughEnabled を true に設定した場合のみ使用できます。個別の HTTP または HTTPS リスナー上に proxyHandler プロパティーを設定すると、すべてのリスナーのデフォルト設定が上書きされます。

asadmin set コマンドを使用して、HTTP サービスまたは個別の HTTP リスナー上に proxyHandler プロパティーを設定します。

proxyHandler プロパティーを、すべての HTTP および HTTPS リスナー上に設定するには、次のコマンドを使用します。


asadmin set cluster-name-config.http-service.property.proxyHandler=classname

このプロパティーを個別のリスナー上に設定するには、次のコマンドを使用します。


asadmin set cluster-name-config.http-service.http-listener.listener-name.property.proxyHandler=classname