![]() ![]() ![]() ![]() |
以下の節では、Microsoft Internet Information Server プラグインをインストールしてコンフィグレーションする方法を説明します。
Microsoft Internet Information Server プラグインを使用すると、Microsoft Internet Information Server (IIS) から WebLogic Server にリクエストをプロキシできます。このプラグインは、WebLogic Server の動的な機能を必要とするリクエストを WebLogic Server が処理できるようにすることによって IIS を拡張します。
Microsoft Internet Information Server プラグインは、Internet Information Server (IIS) が HTML ページなどの静的ページを提供し、WebLogic Server が HTTP サーブレットまたは JavaServer Pages などの動的ページを提供する、という環境で使用します。WebLogic Server は、(別のホストの) 別のプロセスで動作している場合もあります。それでも、エンド ユーザ (ブラウザ) では、WebLogic Server に委託される HTTP リクエストは IIS から来ているものと認識されます。WebLogic クライアント/サーバ プロトコルの HTTP トンネリング機能もこのプラグインを介して動作するため、すべての WebLogic サービスへのアクセスを提供できます。
Microsoft Internet Information Server プラグインでは、プラグインから WebLogic Server への接続のプールを使用してパフォーマンスを向上させます。このプラグインは、同じクライアントからの後続リクエストに同じ接続を再利用することで、WebLogic Server との間で HTTP 1.1 キープアライブ接続を実装します。接続が 30 秒 (またはユーザ定義の時間) を超えて非アクティブな場合、その接続は閉じます。クライアントとの接続は、それがタイムアウトになっていなければ、後で同じクライアントと接続するときに再利用できます。この機能は、必要に応じて無効にできます。詳細については、「KeepAliveEnabled」を参照してください。
プラグインは指定されたコンフィグレーションに基づいてリクエストを WebLogic Server にプロキシします。リクエストは、リクエストの URL または URL の一部に基づいてプロキシできます。この方法は、パスに基づくプロキシです。
要求されたファイルの MIME タイプに基づいてリクエストをプロキシすることもできます (ファイル拡張子に基づくプロキシ)。
両方の方法を有効にすることもできます。両方の方法を有効にし、リクエストが両方の基準に一致する場合、そのリクエストはパスに基づいてプロキシされます。
これらのリクエストの種類ごとに、プラグインの補足的な動作を定義する追加パラメータを指定することもできます。詳細については、「Microsoft Internet Information Server プラグインのインストールとコンフィグレーション」を参照してください。
Microsoft Internet Information Server プラグインと互換性のあるオペレーティング システムおよび IIS バージョンの最新情報については、(http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
) を参照してください。
Microsoft Internet Information Server プラグインをインストールするには、次の手順に従います。
WL_HOME
/server/plugin/win/32
または WL_HOME
/server/plugin/win/64
ディレクトリにある iisproxy.dll
ファイルを IIS からアクセス可能なディレクトリにコピーします (WL_HOME
は WebLogic Platform および WebLogic Server の最上位ディレクトリを表し、WebLogic Server のインストール ファイルが格納されています)。このディレクトリには、手順 4 で作成する iisproxy.ini
ファイルも格納する必要があります。iisproxy.dll ファイル用のユーザのパーミッションを設定し、IIS を実行するユーザの名前を含めます。これはたとえば、iisproxy.dll ファイル上で右クリックしてパーミッションを選択し、IIS を実行する人物のユーザ名を追加するという方法で行えます。iisproxy.dll
ファイルを見つけます。iisproxy.dll
ファイルの存在を確認するという以前の動作は、プロキシからリクエストされたファイルが Web サーバのルート ディレクトリに存在するかどうかを確認する動作になりました。この確認でファイルが見つからなかった場合、iisproxy.dll
ファイルは WebLogic Server にリクエストをプロキシできません。注意 : | URL のサーバとポートの後ろに追加されたパス情報は、WebLogic Server にそのまま渡されます。たとえば、次の URL で IIS にファイルを要求した場合、 |
http://myiis.com/jspfiles/myfile.jsp
そのリクエストは次のような URL で WebLogic Server にプロキシされます。
http://mywebLogic:7001/jspfiles/myfile.jsp
注意 : | アウトオブプロセス エラーを避けるため、[すべての不明な ISAPI 拡張] チェック ボックスをオフにしないでください。 |
iisproxy.ini
ファイルで追加パラメータを指定すれば、パスに基づいてファイルを提供するように Microsoft Internet Information Server プラグインをコンフィグレーションできます。パスを基準としたプロキシは、MIME タイプを基準としたプロキシに優先します。
また、パスを使用して IIS で定義されている複数の Web サイトをプロキシすることもできます。詳細については、「複数の仮想 Web サイトから WebLogic Server へのリクエストのプロキシ」を参照してください。
パスによるプロキシをコンフィグレーションするには、次の手順に従います。
iisforward.dll
ファイルを iisproxy.dll
ファイルと同じディレクトリに置き、iisforward.dll
ファイルをフィルタ サービスとして IIS に追加します (Web サイトの [プロパティ]iisforward dll
を追加します)。iisforward.dll ファイル用のユーザのパーミッションを設定し、IIS を実行するユーザの名前を含めます。これはたとえば、iisproxy.dll ファイル上で右クリックしてパーミッションを選択し、IIS を実行する人物のユーザ名を追加するという方法で行えます。iisproxy.dll
で処理される特殊なファイル タイプとして .wlforward
を登録します。 iisproxy.ini
で WlForwardPath プロパティを定義します。WlForwardPath
では、たとえば WlForwardPath=/weblogic
のように WebLogic Server にプロキシするパスを定義します。WlForwardPath
を削除します。次に例を示します。 WlForwardPath=/weblogic
PathTrim=/weblogic
この場合は、IIS から WebLogic Server へのリクエストが削除されます。したがって、/weblogic/session
は /session
に変更されます。
DefaultFileName
パラメータを、リクエストがプロキシされる Web アプリケーションのウェルカム ページの名前に設定します。このパラメータの値は、URL に追加されます。iisproxy.ini
で Debug=ON
パラメータを設定します。デバッグに利用できるプラグインのアクティビティのログを記録した c:\tmp\iisforward.log
が生成されます。iisproxy.ini
ファイルを作成します。
iisproxy.ini
ファイルには、プラグインのコンフィグレーション パラメータを定義する名前と値のペアを格納します。パラメータのリストについては、「Web サーバ プラグインの一般的なパラメータ」を参照してください。
この節の iisproxy.ini
ファイルの例 (iisproxy.ini ファイルのサンプル) を必要な iisproxy.ini
ファイルのテンプレートとして使用します。
注意 : パラメータの変更は、コントロール パネルの [サービス] で「IIS Admin Service」を再起動するまで有効にはなりません。
Oracle では、iisproxy.ini
ファイルを iisproxy.dll
ファイルと同じディレクトリに配置することをお勧めします。他の場所を使用することもできます。他のディレクトリに配置した場合、以下のディレクトリにおいて以下の順序で iisproxy.ini
が検索されます。
iisproxy.ini
ファイルで WebLogicHost パラメータと WebLogicPort パラメータを定義する。次に例を示します。WebLogicHost=localhost
WebLogicPort=7001
iisproxy.ini
ファイルで WebLogicCluster パラメータを定義する。次に例を示します。WebLogicCluster=
myweblogic.com
:7001,
yourweblogic.com
:7001
myweblogic.com
と yourweblogic.com
は、クラスタ内で動作する WebLogic Server のインスタンスです。
iisproxy.ini
ファイルで追加パラメータを設定します。パラメータの詳細なリストについては、「Web サーバ プラグインの一般的なパラメータ」で参照できます。iisproxy.dll
は許可されていません。IIS Manager コンソールを使用して、プラグインを有効にしてください。
複数の Web サイト (IIS の仮想ディレクトリとして定義) からリクエストを WebLogic Server にプロキシするには、次の手順に従います。
dll
および ini
ファイルが格納されます。iisforward.dll
をコピーします。 iisforward.dll
を IIS に登録します。iisforward.ini
というファイルを作成します。このファイルは iisforward.dll
と同じディレクトリに配置します。このファイルには、IIS に定義されている仮想 Web サイトごとに次のエントリを格納する必要があります。vhostN
=websiteName
:port
:
websiteNameport
=dll_directory
/iisproxy.ini
N
は、仮想 Web サイトを表す整数。最初に定義する仮想 Web サイトには整数 1 を使用し、以降の Web サイトには順に 1 ずつ増やします。websiteName
は、IIS に登録した仮想 Web サイトの名前。port
は、IIS が HTTP リクエストをリスンしているポート番号。dll_directory
は、手順 1 で作成したディレクトリへのパス。 vhost1=strawberry.com:7001
strawberry.com:7001=c:\strawberry\iisproxy.ini
vhost2=blueberry.com:7001
blueberry.com:7001=c:\blueberry\iisproxy.ini
...
iisproxy.ini
ファイルを作成します。この iispoxy.ini
ファイルは、手順 1 で作成したディレクトリにコピーします。iisproxy.dll
をコピーします。
次に、クラスタ化されていない 1 つの WebLogic Server で使用するサンプル iisproxy.ini
ファイルを示します。先頭に「#
」が付いた行はコメントです。
# このファイルでは、IIS/WebLogic プラグイン用の
# 初期化パラメータの名前と値のペアを指定する
WebLogicHost=localhost
WebLogicPort=7001
ConnectTimeoutSecs=20
ConnectRetrySecs=2
次に、クラスタ化された WebLogic Server で使用するサンプル iisproxy.ini
ファイルを示します。先頭に「#
」が付いた行はコメントです。
# このファイルでは、IIS/WebLogic プラグイン用の
# 初期化パラメータの名前と値のペアを指定する
WebLogicCluster=myweblogic.com:7001,yourweblogic.com:7001
ConnectTimeoutSecs=20
ConnectRetrySecs=2
注意 : | プラグインと WebLogic Server の間で SSL を使用する場合は、SSL リスン ポートとしてポート番号を定義する必要があります。 |
ACL は、IIS から Authorization ヘッダが渡されない場合は Microsoft Internet Information Server プラグインでは機能しません。以下の情報を参考にして、Authorization ヘッダが IIS によって渡されることを確認してください。
基本認証を使用する場合、ユーザはローカルのログオン権限でログオンします。基本認証の使用を有効にするには、IIS サーバで各ユーザ アカウントに「ローカル ログオン」ユーザ権限を付与します。基本認証のローカル ログオンを使用する場合、2 つの問題が発生する可能性があります。
基本認証を有効にするには、コンソールの [ディレクトリ セキュリティ] タブで、[Allow Anonymous] が「オン」、それ以外のオプションがすべて「オフ」になっていることを確認してください。
Microsoft Internet Information Server プラグインを介してアクセスされる WebLogic Server アプリケーションを保護するには、境界認証を使用します。
WebLogic ID アサーション プロバイダは、WebLogic Server アプリケーションにアクセスする外部システム (Microsoft Internet Information Server プラグインを介して WebLogic Server アプリケーションにアクセスするユーザを含む) のトークンを認証します。次のように、プラグインを保護する ID アサーション プロバイダを作成します。
web.xml
デプロイメント記述子ファイルで clientCertProxy
属性を True に設定します。クラスタを使用する場合は、Administration Console の [クラスタ|コンフィグレーション|全般] タブで、クラスタ全体に対して [クライアント証明書プロキシを有効化
] 属性を True に設定することもできます。『WebLogic Server Web アプリケーションの開発』の「context-param」を参照してください。clientCertProxy
を設定したら、接続フィルタを使用して、Microsoft Internet Information Server プラグインが動作しているマシンからの接続のみを WebLogic Server が受け入れるようにします。『WebLogic Security プログラマーズ ガイド』の「ネットワーク接続フィルタの使い方」を参照してください。
キーストアから別の信頼性のある CA ファイルを取得するには、エリアス名を変更します。
キーストアの信頼された CA ファイルをすべて表示するには、次のコマンドを使用します。
keytool -list -keystore DemoTrust.jks
ID アサーション プロバイダの詳細については、『WebLogic Server セキュリティ プロバイダの開発』の「ID アサーション プロバイダ」を参照してください。
セキュア ソケット レイヤ (SSL) プロトコルを使用すると、WebLogic Server と Microsoft Internet Information Server プラグインの間で接続を保護できます。SSL プロトコルは、Microsoft Internet Information Server プラグインと WebLogic Server の間でやり取りされるデータに機密性と整合性をもたらします。
Microsoft Internet Information Server プラグインは、SSL プロトコルを使用してプロキシ プラグインと Microsoft Internet Information Server の間の接続が保護されるかどうかを、転送プロトコル (http
または https
) では判断しません。Microsoft Internet Information Server プラグインで SSL プロトコルを使用するには、プロキシされるリクエストを受け取る WebLogic Server インスタンスで、SSL プロトコルを使用するようにコンフィグレーションします。Microsoft Internet Information Server プラグインでは、セキュアな SSL 通信を使用するようにコンフィグレーションされた WebLogic Server 上のポートを使用して Microsoft Internet Information Server と通信します。
Microsoft Internet Information Server プラグインと WebLogic Server の間で SSL プロトコルを使用するには、次の手順を行います。
iisproxy.ini
ファイルの WebLogicPort
パラメータを、手順 2 でコンフィグレーションしたリスン ポートに設定します。iisproxy.ini
ファイルの SecureProxy
パラメータを ON
に設定します。iisproxy.ini
ファイルに設定します。パラメータの詳細なリストについては、「Web サーバ プラグインの SSL パラメータ」を参照してください。WebLogicHost=myweblogic.com
WebLogicPort=7002
SecureProxy=ON
iisforward.dll
がフィルタとして登録されている場合は、サーブレットをパスに基づいてプロキシできます。その場合は、次の形式の URL でサーブレットを呼び出します。
http://IISserver/weblogic/myServlet
iisforward.dll
がフィルタとして登録されていない場合にサーブレットをプロキシするには、ファイル タイプを基準としたサーブレットのプロキシをコンフィグレーションする必要があります。ファイル タイプでサーブレットをプロキシするには、次の操作を行います。
http://www.myserver.com/
virtualName
/
anyfile
.
ext
virtualName
は、このサーブレットの Web アプリケーション デプロイメント記述子 (web.xml
) の <servlet-mapping>
要素で定義された URL パターン、ext
は WebLogic Server にプロキシするために IIS に登録されたファイル タイプ (拡張子) です。URL の anyfile
の部分は、このコンテキストでは無視されます。
Microsoft Internet Information Server プラグインをインストールしてコンフィグレーションした後は、次の手順に従ってデプロイメントとテストを行います。
WebLogic Server に接続するときに、Microsoft Internet Information Server プラグインは複数のコンフィグレーション パラメータを使用して WebLogic Server ホストへの接続の待ち時間と、接続確立後の応答の待ち時間を判断します。接続できないか、応答がない場合、このプラグインはクラスタ内の別の WebLogic Server に接続してリクエストを送信しようとします。接続が失敗するか、クラスタ内のどの WebLogic Server インスタンスからも応答がない場合は、エラー メッセージが送信されます。
図 4-1 は、プラグインがどのようにフェイルオーバを処理するのかを示しています。
接続リクエストに WebLogic Server ホストが応答できない場合は、ホスト マシンやネットワークに問題がある、またはサーバに障害があることが考えられます。
クラスタ内のすべての WebLogic Server インスタンスが応答できない場合は、WebLogic Server が動作していないか利用できない、またはサーバのハング、データベースの問題、アプリケーションに障害があるなどの原因が考えられます。
WebLogic Server が 1 つだけ動作している場合、プラグインは WebLogicHost パラメータで定義されているサーバにのみ接続しようとします。その試行が失敗すると、HTTP 503
エラー メッセージが返されます。プラグインは、ConnectTimeoutSecs を超えるまで WebLogic Server への接続を試み続けます。
WebLogicCluster
パラメータで WebLogic Server のリストを指定すると、プラグインではクラスタ メンバー間でのロード バランシングの起点としてそのリストが使用されます。最初のリクエストがそれらのサーバの 1 つに転送された後に、クラスタ内のサーバの更新されたリストを格納する動的サーバ リストが返されます。更新されたリストではクラスタ内の新しいサーバが追加され、すでにクラスタから外れているか、リクエストに応答できなかったサーバが削除されます。このリストは、クラスタで変更が行われたときに HTTP 応答によって自動的に更新されます。
リクエストがクッキー、POST データ、または URL エンコーディングを通じてセッション情報を格納している場合、そのセッション ID にはセッションが最初に確立された特定のサーバ (プライマリ サーバ) への参照と元のセッションがレプリケートされる追加サーバ (セカンダリ サーバ) への参照が含まれています。クッキーが含まれているリクエストは、プライマリ サーバに接続しようとします。その試行が失敗すると、リクエストはセカンダリ サーバに転送されます。プライマリ サーバとセカンダリ サーバが両方とも失敗すると、セッションが失われて、プラグインは動的クラスタ リストの別のサーバにあらためて接続しようとします。詳細については、図 4-1 を参照してください。
注意 : | POST データが 64K を超える場合、プラグインは、セッション ID を取得するための POST データの解析を行いません。したがって、セッション ID を POST データに格納した場合、プラグインはリクエストを正しいプライマリまたはセカンダリ サーバにルーティングできないので、セッション データが失われるおそれがあります。 |
上図の赤で示すループ内での最大再試行回数は、ConnectTimeoutSecs/ConnectRetrySecs
で計算されます。
![]() ![]() ![]() |