WebLogic Server (以後 WLS) 単体でも静的コンテンツの処理 ができますが画像などは Web Server に任せた方がサーバへの負担が 少なくなります。IISをフロントエンドにおき、特定のディレク トリ以下をすべて WLS に転送するように設定します。
インターネットサービスマネージャを起動します。 「サーバから右クリック->新規->Webサイト」を選択してウィザードを起動する。
Webサイトの説明を入力してください。 | WebLogic (任意) |
このWebサイトで使用されるIPアドレスを入力してください | (未使用のIPアドレスすべて) |
このWebサイトが使用するTCPポート | 8080 (任意) |
パス | D:\Inetpub\wlsweb(任意) |
Webサイトのアクセス許可 | 読み取りとASP等のスクリプトを実行するにチェック |
デフォルトだとログが毎日になっているのですがこれでは扱いにくいので 週ごとに変更します。また analog で解析できるように拡張ログオプション に追加で送信バイト数と受信バイト数をチェックします。
Webサイト→ログのプロパティ
全般タブ | 新しいログ期間 | 毎週 |
ログファイルディレクトリ | D:\Inetpub\logs | |
拡張タブ | 拡張ログオプション | 送信バイト数と受信バイト数に追加でチェック |
Microsoft IIS プラグインのインストールとコンフィグレーション を参考にIIS Plug-inの設定を行います。 「パスを基準にしたプロキシをコンフィグレーション」に該当します。
Web サイトの「プロパティ->ISAPI フィルタ」からiisforward.dll をISAPIフィルタとして登録します。
フィルタ名 | iisforward (任意) |
実行ファイル | C:\bea\weblogic81\server\bin\iisforward.dll |
Webサイトを再起動します。再度ISAPIフィルタタブをみて状態が上矢印 になっていることを確認します。
インターネットサービスマネージャからWebサイトを選択して 「右ボタン->プロパティ」を選択します
「ホームディレクトリ->構成->アプリケーションのマッピング」で以下の拡張子 以外を削除します。
.asp | C:\WINNT\System32\inetsrv\asp.dll | GET/HEAD/POST/TRACE |
.asa | C:\WINNT\System32\inetsrv\asp.dll | GET/HEAD/POST/TRACE |
.shtml | C:\WINNT\System32\inetsrv\ssinc.dll | GET/HEAD/POST/TRACE |
IIS Plug-in を登録します。
実行ファイル | C:\bea\weblogic81\server\bin\iisproxy.dll |
拡張子 | .wlforward |
動詞 | GET/HEAD/POST(実際はカンマ区切りです) |
スクリプトエンジン | チェック(デフォルト) |
ファイルの存在を確認する | チェックしない(デフォルト) |
C:\bea\weblogic81\server\bin\iisproxy.ini を作成します。
WebLogicHost=localhost WebLogicPort=7001 ConnectTimeoutSecs=20 ConnectRetrySecs=2 WlForwardPath=/lab
Webサイトを再起動します。
これで http://localhost:8080/lab (IIS) へアクセスすると 自動的に http://localhost:7001/lab (WLS) へ転送さ れます。アドレスバーはIISをさしたままですので WLS の存在を意識させません。 (実際はHTTPヘッダやエラー表示に WebLogic という文字が入っているため 完全に隠せるわけではありません)
Plug-in の設定を行う場合は WLS への直接アクセスを禁止する設定が できます。
たとえば・・・
この状態で Location HTTPヘッダを使用してリダイレクトを行うと WLSへ直接アクセスさせる Location ヘッダが作成されてしまい、 ブラウザからアクセスできなくなります。
Browser ---- IIS --------- WebLogic ---->GET --------> GET Location <--- Location<---- --------------> X 直接アクセスしにいこうとしてエラーとなる Error
これは Location ヘッダがホスト名まで含めた http://xxxxx:nnnn/zzzz という形式のアドレスとなっている必要があるためです。このため WLS は 自身へアクセスするような Location ヘッダをホスト名を含めて作成するのです が自身へのアクセスが禁止されているためにエラーになります。 このエラーを回避するためにWLS にフロントエンドサーバの設定を行います。
「サーバ->サーバ名->プロトコル->HTTP」で詳細オプションを表示させる と「フロントエンドホスト」「フロントエンドポート」の設定を行います。
フロントエンドホスト | サーバ名 |
フロントエンドポート | 8080 (IISのポートに合わせます) |
ただし、 WLS管理コンソールにログインするときにリダイレクトは使用されています。 管理サーバへ「フロントエンドホスト」や「フロントエンドポート」を設定 するときは /console へのアクセスもリダイレクトするように設定しないと 管理コンソールにもログオンできなくなります。
Browser ---- IIS --------- WebLogic -----------------> GET (直接アクセスする) <----------------- Login Form ID,PASS -----------------> <----------------- IIS の /console へのリダイレクト ---- IIS Error <--- (/console の設定がないので 404 になる)
iisproxy.ini
WebLogicHost=localhost WebLogicPort=7001 ConnectTimeoutSecs=20 ConnectRetrySecs=2 WlForwardPath=/training,/console <-- /console も追加する
注意) この設定を行うとセキュリティが下がります。今回はサーバのパワー が少なかったのでスタンドアロン構成にしましたがやはり管理サーバと管理 対象サーバは分割するべきなのでしょう (bea は分割することを推奨しています)。