Sun Java System Application Server 9.1 高可用性 (HA) 管理ガイド

ロードバランサによるリダイレクトの使用

リダイレクトを使用して、ある URL から別の URL へ要求をリダイレクトします。たとえば、リダイレクトを使用して、ユーザーを別の Web サイトに送信したり (旧バージョンのアプリケーションから新しいバージョンへリダイレクトする場合など)、HTTP から HTTPS へ、または HTTPS から HTTP へ送信したりします。アプリケーション内でリダイレクトを有効にする方法はいくつもあります (たとえば、servlet ベースのリダイレクト、web.xml リダイレクト)。ただし、ロードバランサを通してリダイレクト URL を送信するには、Application Server またはロードバランサに対していくつか追加設定が必要な場合があります。リダイレクトは HTTPS ルーティングを使用して転送される要求とは異なるので注意してください。リダイレクトを使用するときには、httpsrouting を false に設定します。HTTPS 要求を HTTP に転送するように設定する場合は、「HTTPS ルーティング」を使用します。

リダイレクトに影響するプロパティーは次のとおりです。HTTP サービスまたは HTTP リスナーの authPassthroughEnabled および proxyHandler プロパティーと、loadbalancer.xml ファイル内の rewrite-location プロパティー。

authPassthroughEnabled プロパティー

Application Server authPassthroughEnabled プロパティーを true に設定した場合、カスタムな要求ヘッダーを使用して、元のクライアント要求に関する情報 (クライアント IP アドレス、SSL キーサイズ、認証されたクライアント証明書チェーンなど) が HTTP リスナーへ送信されます。authPassThroughEnabled プロパティーを使用すると、ハードウェアアクセラレータ (インストールされている場合) を利用して SSL 認証をより高速にできます。ハードウェアアクセラレータの設定は、クラスタ化されたそれぞれの Application Server インスタンス上よりも、ロードバランサ上で行う方が簡単です。


注意 – 注意 –

authPassthroughEnabled は、Application Server がファイアウォールの後ろにある場合のみ true に設定します。


asadmin set コマンドを使用して、HTTP サービスまたは個別の HTTP リスナー上に authPassthroughEnabled プロパティーを設定します。個別の HTTP リスナーに対する設定は、HTTP サービスに対する設定よりも優先されます。

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

asadmin set cluster-name-config.http-service.property.authPassthroughEnabled=true

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

asadmin set cluster-name-config.http-service.http-listener.listener-name.property.authPassthroughEnabled=true

proxyHandler プロパティー

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

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

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

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

この抽象クラスの実装は、Application Server インスタンスへの元のクライアント要求に関する情報を伝達するためにプロキシサーバーが使用するカスタム要求ヘッダーに対して行われる特定の要求を調べ、その情報を呼び出し元に返します。デフォルトの実装では、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

rewrite-location プロパティー

rewrite-location プロパティーを true に設定すると、元の要求情報が書き換えられ、プロトコル (HTTP または HTTPS)、ホスト、およびポートの情報が追加されます。デフォルトでは、以前のリリースの Application Server との後方互換性を保つために、rewrite-location プロパティーは true に設定されます。

rewrite-location プロパティーは、asadmin create-http-lb-config または asadmin set コマンドを介して使用することはできません。このプロパティーを使用するには、ロードバランサ設定をエクスポートしてから、loadbalancer.xml ファイルにこのプロパティーを手動で追加します。たとえば、エクスポートした loadbalancer.xml ファイルに、次の内容を追加します。

<property name="rewrite-location" value="false"/>

rewrite-location プロパティーを設定するときには、次の点に注意します。