BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic Server における Web サーバ プラグインの使い方 > Apache HTTP Server プラグインのインストールとコンフィグレーション |
WebLogic Server における Web サーバ プラグインの使い方
|
Apache HTTP Server プラグインのインストールとコンフィグレーション
以下の節では、Apache HTTP Server プラグインをインストールしてコンフィグレーションする方法を説明します。
Apache HTTP Server プラグインを使用すると、Apache HTTP サーバから WebLogic Server へリクエストをプロキシできます。このプラグインは、WebLogic Server の動的な機能を必要とするリクエストを WebLogic Server が処理できるようにすることによって Apache を拡張します。
このプラグインは、Apache サーバが静的ページを提供している環境で使用されることを想定しています。 ドキュメント ツリーの他の部分 (HTTP サーブレットや JavaServer Pages によって最も適切な状態で生成される動的ページ) は、別のプロセス (おそらく別のホスト) で動作している WebLogic Server に委託されます。それでも、エンド ユーザ (ブラウザ) では、WebLogic Server に委託される HTTP リクエストは同じソースから来ているものと認識されます。
HTTP トンネリング (企業のファイアウォールを経由した HTTP リクエストおよび応答のアクセスを可能にする技術) も、このプラグインを通じて機能でき、ブラウザ以外のクライアントが WebLogic Server サービスにアクセスすることを可能にします。
Apache HTTP Server プラグインは、Apache HTTP サーバ内で Apache モジュールとして機能します。Apache モジュールは起動時に Apache サーバによってロードされ、特定の HTTP リクエストがそこに委託されます。Apache モジュールは、HTTP サーブレットと似ていますが、プラットフォームにネイティブなコードで記述されています。
Apache HTTP Server のバージョン 1.3.x では、以降のバージョンにはない WebLogic Server プラグインに関する制限事項があります。
Apache HTTP Server プラグインのバージョン 1.3.x は、リクエストごとにソケットを作成し、応答を読み込んでからソケットを閉じます。Apache HTTP サーバは多重処理されるため、WebLogic Server と Apache HTTP Server プラグインの間では接続プールとキープアライブ接続はサポートされていません。
Apache HTTP Server はマルチプロセス アーキテクチャであり、プラグインの状態は複数の子プロセス間で同期されません。 次のような問題が発生する可能性があります。
このような矛盾を一時的に修正するには、Apache サーバを再起動するか HUP 信号 (kill -HUP) を送信して、すべてのプラグイン プロセスを更新します。
この問題を回避するには、Apache 2.0.x にアップグレードし、httpd.conf で MaxSpareServers=1 を設定して、マルチスレッドおよびシングルプロセス モデルを使用するように Apache をコンフィグレーションします。 httpd.conf の編集の詳細については、Apache HTTP Server プラグインのコンフィグレーションを参照してください。
Apache HTTP Server プラグインのバージョン 2.0 は、WebLogic Server との接続の再利用可能なプールを使用してパフォーマンスを向上させます。このプラグインは、同じクライアントからの後続リクエストにプール内の同じ接続を再利用することで、WebLogic Server との間で HTTP 1.1 キープアライブ接続を実装します。接続が 30 秒 (またはユーザ定義の時間) を超えて非アクティブな場合、その接続は閉じて、プールに返されます。この機能は、必要に応じて無効にできます。詳細については、 「KeepAliveEnabled」を参照してください。
このプラグインは、指定されたコンフィグレーションに基づいてリクエストを WebLogic Server にプロキシします。リクエストは、リクエストの URL (または URL の一部) に基づいてプロキシできます。この方法は、パスに基づくプロキシです。要求されたファイルの MIME タイプに基づいてプロキシすることもできます。あるいは、前述の方法を組み合わせて利用することもできます。リクエストが両方の基準に一致する場合、そのリクエストはパスを基準にプロキシされます。リクエストの種類ごとに、プラグインの補足的な動作を定義する追加パラメータを指定することもできます。詳細については、Apache HTTP Server プラグインのコンフィグレーションを参照してください。
Apache HTTP Server プラグインは、Linux、Solaris、AIX、Windows および HPUX11 の各プラットフォームでサポートされています。 プラグインはすべてのリリースのすべてのオペレーティング システムでサポートされているわけではありません。Apache の特定のバージョンのプラットフォーム サポートについては、「WebLogic Platform サポート対象のコンフィグレーション」を参照してください。
Apache HTTP Server プラグインのインストール
Apache HTTP Server プラグインは、Apache HTTP サーバで Apache モジュールとしてインストールします。モジュールは、動的共有オブジェクト (DSO) または静的リンク モジュールとしてインストールされます。静的リンク モジュールとしてのインストールは、Apache バージョン 1.3.x でのみ可能です。この節では、DSO および静的リンク モジュールについてそれぞれの場合のインストール手順を紹介します。
Apache HTTP Server プラグインの動的共有オブジェクトとしてのインストール
Apache HTTP Server プラグインを動的共有オブジェクトとしてインストールするには、次の操作を行います。
Apache プラグインは、Solaris、Linux、Windows、および HPUX11 プラットフォームでの使用を考慮して共有オブジェクト (.so) として配布されます。各共有オブジェクト ファイルは、プラットフォーム、クライアントと Apache の間での SSL の使用と不使用、および SSL 暗号化の強度 (通常または 128 ビット) に応じて別々のバージョンとして配布されます。128 ビット バージョンは、128 ビット バージョンの WebLogic Server をインストールする場合のみインストールされます。共有オブジェクト ファイルは、WebLogic Server の以下のディレクトリに配置されています。WL_HOME は WebLogic プラットフォームの最上位のインストール ディレクトリであり、Server ディレクトリには WebLogic Server のインストール ファイルが格納されます。
警告: Apache 2.0.x サーバを HP-UX11 で実行する場合は、Apache サーバをビルドする前に下で示されている環境変数を設定します。 HP-UX ではリンクされたライブラリがロードされる順序に問題があるので、ビルドの前にロード順が環境変数として事前設定されていないとコア ダンプが生じることがあります。 以下の環境変数を設定します。
export EXTRA_LDFLAGS="-lstd -lstream -lCsup -lm -lcl -ldld -lpthread"
./configure --prefix=$INSTALLATION_DIRECTORY --enable-so --with-mpm=worker
make
make install
Apache HTTP Server プラグインは、Apache 動的共有オブジェクト (DSO) として Apache HTTP サーバにインストールされます。Apache の DSO サポートは、mod_wl.so のロード前に有効にする必要のある mod_so.c というモジュールに基づいています。提供されるスクリプトを使用して Apache をインストールした場合、mod_so.c は既に有効になっているはずです。mod_so.c が有効であることを確認するには、以下のいずれかのコマンドを実行します。
APACHE_HOME¥bin¥httpd -l (Apache 1.x の場合)
APACHE_HOME¥bin¥Apache -l (Apache 2.x の場合)
APACHE_HOME は、Apache HTTP サーバのインストール ディレクトリです。
このコマンドでは、有効なすべてのモジュールのリストが表示されます。mod_so.c がリストにない場合は、ソース コードから Apache HTTP サーバを構築して、以下のオプションがコンフィグレーションされているようにします。
$ apxs mod_so.c
Apache ソース ツリーの外で動的共有オブジェクトベースのモジュールがビルドされ、httpd.conf ファイルに次の行が追加されます。
AddModule mod_so.c
Apache 2.x の場合は、apxs を実行するのではなく、mod_wl_20.so ファイルを APACHE_HOME¥modules ディレクトリにコピーします。詳細については、「Apache HTTP サーバ バージョン 2.0 ドキュメント」を参照してください。
Apache 1.x の場合は、WebLogic Server でコマンド シェルを使用して、使用しているプラットフォーム用の共有オブジェクトがあるディレクトリに移動し、次のコマンドを発行して weblogic_module をアクティブにします。Perl がインストールされていないと、この Perl スクリプトは実行できません。
perl APACHE_HOME¥bin¥apxs -i -a -n weblogic mod_wl.so
このコマンドでは、mod_wl.so ファイルが APACHE_HOME¥libexec ディレクトリにコピーされます。さらに、httpd.conf ファイルに weblogic_module に関する指示が 2 行追加され、このモジュールがアクティブ化されます。Apache 1.x サーバの APACHE_HOME/conf/httpd.conf ファイルに以下の行が追加されていることを確認してください。
LoadModule weblogic_module libexec/mod_wl.so
AddModule mod_weblogic.c
Apache 2.x の場合は、手作業で次の行を APACHE_HOME/conf/httpd.conf ファイルに追加します。
LoadModule weblogic_module modules/mod_wl_20.so
APACHE_HOME¥bin¥apachect1 configtest (Apache 1.x の場合)
APACHE_HOME¥bin¥Apache -t (Apache 2.x の場合)
注意: Apache -t は、Windows 上の Apache 2.x では有効なコマンドです。しかし、HP-UX 上の Apache 2.x の場合、Apache コマンド ファイルではなく apachectl を使用するので、Apache -t は有効なコマンドではありません。
http://myApacheserver.com/weblogic/
Apache HTTP Server プラグインの静的リンク モジュールとしてのインストール
Apache HTTP Server プラグインを静的リンク モジュールとしてインストールするには、次の操作を行います。
各ライブラリ ファイルは、プラットフォームおよび SSL 暗号化の強度 (通常または 128 ビット) に応じて別々のバージョンとして配布されます。128 ビット バージョンは、128 ビット バージョンの WebLogic Server をインストールする場合のみインストールされます。ライブラリ ファイルは、WebLogic Server の以下のディレクトリに配置されています。
tar -xvf apache_1.3.x.tar
configure --activate-module=src¥modules¥weblogic¥libweblogic.a
configure--activate-module=
src¥modules¥weblogic¥libweblogic128.a
make
make install
Apache HTTP Server プラグインのコンフィグレーション
Apache HTTP サーバにプラグインをインストールした後は、httpd.conf ファイルを編集して Apache プラグインをコンフィグレーションします。httpd.conf ファイルを編集して、プラグイン用のネイティブ ライブラリを Apache モジュールとしてロードしなければならないことを Apache Web サーバに通知し、どのリクエストをそのモジュールで処理しなければならないかを記述します。
Apache HTTP サーバの httpd.conf ファイルを編集し、Apache HTTP Server プラグインをコンフィグレーションします。
LoadModule weblogic_module libexec¥mod_wl.so
AddModule mod_weblogic.c
LoadModule weblogic_module modules¥mod_wl_20.so
たとえば、クラスタ化されていない WebLogic Server に対する次の IfModule ブロックでは、MIME タイプが .jsp であるすべてのファイルがプロキシされます。
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>
次のように、複数の MatchExpressions を使用することもできます。
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
MatchExpression *.xyz
</IfModule>
MIME タイプを基準に WebLogic Server のクラスタにリクエストをプロキシする場合は、WebLogicHost および WebLogicPort パラメータの代わりに WebLogicCluster パラメータを使用します。次に例を示します。
<IfModule mod_weblogic.c>
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
MatchExpression *.jsp
MatchExpression *.xyz
</IfModule>
<Location /weblogic>
SetHandler weblogic-handler
</Location>
Apache HTTP Server プラグインは、Web サーバ プラグインの一般的なパラメータにリストされているパラメータを認識します。Apache HTTP Server プラグインの動作を修正するには、以下のいずれかの場所でそれらのパラメータを定義します。
<IfModule mod_weblogic.c>
# パラメータを定義する WebLogic 用コンフィグレーション ファイル
Include conf/weblogic.conf
</IfModule>
PARAM_1 value1
PARAM_2 value2
PARAM_3 value3
Apache HTTP Server httpd.conf ファイルのテンプレート
この節では、サンプルの httpd.conf ファイルを紹介します。このサンプルをテンプレートとして使用し、ユーザの環境およびサーバに合うように変更できます。# で始まる行はコメントです。Apache HTTP サーバでは大文字と小文字は区別されません。また、LoadModule および AddModule 行は、apxs ユーティリティによって自動的に追加されます。
####################################################
APACHE-HOME/conf/httpd.conf file
####################################################
LoadModule weblogic_module libexec/mod_wl.so
AddModule mod_weblogic.c
<Location /weblogic>
SetHandler weblogic-handler
PathTrim /weblogic
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<Location /servletimages>
SetHandler weblogic-handler
PathTrim /something
ErrorPage http://myerrorpage1.mydomain.com
</Location>
<IfModule mod_weblogic.c>
MatchExpression *.jsp
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
</IfModule>
httpd.conf コンフィグレーション ファイルのサンプル
httpd.conf ファイルの location ブロックでパラメータを定義する代わりに、必要に応じて、httpd.conf ファイルの IfModule によってロードされる weblogic.conf ファイルを使用できます。次の例をテンプレートとして使用して、ユーザの環境およびサーバに合うように変更できます。# で始まる行はコメントです。
# このパラメータは、現在のモジュールに転送される
# すべての URL で共通。URL ごとにパラメータを
# オーバーライドする場合は、<Location> ブロック
# または <Files> ブロックで設定できる (WebLogicHost、
# WebLogicPort、WebLogicCluster、CookieName は除く)
<IfModule mod_weblogic.c>
WebLogicCluster w1s1.com:7001,w1s2.com:7001,w1s3.com:7001
ErrorPage http://myerrorpage.mydomain.com
MatchExpression *.jsp
</IfModule>
####################################################
# このパラメータは、現在のモジュールに転送される
# すべての URL で共通。URL ごとにパラメータを
# オーバーライドする場合は、<Location> ブロック
# または <Files> ブロックで設定できる (WebLogicHost、
# WebLogicPort、WebLogicCluster、CookieName は除く)
<IfModule mod_weblogic.c>
MatchExpression *.jsp WebLogicHost=myHost|WebLogicPort=7001|Debug=ON
MatchExpression *.html WebLogicCluster=myHost1:7282,myHost2:7283|ErrorPage=
http://www.xyz.com/error.html
</IfModule>
# このパラメータは、現在のモジュールに転送される
# すべての URL で共通。URL ごとにパラメータを
# オーバーライドする場合は、<Location> ブロック
# または <Files> ブロックで設定できる (WebLogicHost、
# WebLogicPort、WebLogicCluster、CookieName は除く)
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
</IfModule>
NameVirtualHost 172.17.8.1
<VirtualHost goldengate.domain1.com>
WebLogicCluster tehama1:4736,tehama2:4736,tehama:4736
PathTrim /x1
ConnectTimeoutSecs 30
</VirtualHost>
<VirtualHost goldengate.domain2.com>
WeblogicCluster green1:4736,green2:4736,green3:4736
PathTrim /y1
ConnectTimeoutSecs 20
</VirtualHost>
単一 IP アドレスによる名前ベースの仮想ホスティングのコンフィグレーション例
<VirtualHost 162.99.55.208>
ServerName myserver.mydomain.com
<Location / >
SetHandler weblogic-handler
WebLogicCluster 162.99.55.71:7001,162.99.55.72:7001
Idempotent ON
Debug ON
DebugConfigInfo ON
</Location>
</VirtualHost>
<VirtualHost 162.99.55.208>
ServerName myserver.mydomain.com
<Location / >
SetHandler weblogic-handler
WebLogicHost russell
WebLogicPort 7001
Debug ON
DebugConfigInfo ON
</Location>
</VirtualHost>
セキュア ソケット レイヤ (SSL) プロトコルを使用すると、Apache HTTP Server プラグインと WebLogic Server の間で接続を保護できます。SSL プロトコルは、Apache HTTP Server プラグインと WebLogic Server の間でやり取りされるデータに機密性と整合性をもたらします。
Apache HTTP Server プラグインは、(通常はブラウザによって) HTTP リクエストで指定される転送プロトコル (http または https) では、SSL プロトコルを使用して Apache HTTP Server プラグインと WebLogic Server の間の接続が保護されるかどうかを判断しません。
HTTP クライアントと Apache HTTP サーバ間では相互 SSL を使用できますが、Apache HTTPサーバと WebLogic Server 間では一方向の SSL が使用されます。
Apache と HTTP クライアント間の相互 SSL の実装
request.getAttribute("javax.net.ssl.peer_certificates");
Apache HTTP Server プラグインと WebLogic Server 間の SSL のコンフィグレーション
Apache HTTP Server プラグインと WebLogic Server の間で SSL プロトコルを使用するには、次の手順を行います。
WL-Proxy-Client-Cert ヘッダの信頼の指定
プラグインは WL-Proxy-Client-Cert ヘッダでユーザの ID 証明書をエンコードし、そのヘッダを WebLogic Server インスタンスに渡すことができます (「別の Web サーバへのリクエストのプロキシ」を参照)。 WebLogic Server インスタンスは、それがセキュアなソース (プラグイン) から来ているものと信頼し、ヘッダの証明書情報を使用してユーザを認証します。 以前の WebLogic Server のデフォルト動作では、WL-Proxy-Client-Cert ヘッダを常に信頼していました。 WebLogic Server 6.1 SP2 からは、WL-Proxy-Client-Cert ヘッダの信頼を明示的に定義する必要があります。 新しいパラメータ clientCertProxy を使用すると、証明書ヘッダを信頼するかどうか指定することができます。 セキュリティの強化には、WebLogic Server へのすべての接続を制限する接続フィルタを使用します。そうすることで、プラグインが動作しているマシンからの接続のみを WebLogic Server で受け容れることができます。
clientCertProxy パラメータは、HTTPClusterServlet および Web アプリケーションに追加されています。
HTTPClusterServlet では、このパラメータを次のように web.xml ファイルに追加します。
<context-param>
<param-name>clientCertProxy</param-name>
<param-value>true</param-value>
</context-param>
Web アプリケーションでは、このパラメータを次のように web.xml ファイルに追加します。
ServletRequestImpl context-param
<context-param>
<param-name>weblogic.httpd.clientCertProxy</param-name>
<param-value>true</param-value>
</context-param>
このパラメータは、次のようにクラスタで使用することもできます。
<Cluster ClusterAddress="127.0.0.1" Name="MyCluster"
ClientCertProxyHeader="true"/>
SSL を使用するように Apache プラグインをコンフィグレーションする際には、以下の確認済みの問題に注意してください。
<Location /weblogic>
SetHandler weblogic-handler
</Location>
<IfModule mod_weblogic.c>
WebLogicHost localhost
WebLogicPort 7001
PathTrim /weblogic
</IfModule>
./Configure solaris-sparcv8-gcc -fexceptions
--prefix=/home/egross/solaris/ssl shared
make
make install
cd ..
cd mod_ssl-2.8.12-1.3.27
export LD_LIBRARY_PATH=/home/egross/solaris/ssl/lib
./configure "--with-apache=../apache_1.3.27"
"--with-ssl=/home/egross/solaris/ssl" "--prefix=/usr/local/apache_so"
"--enable-rule=SHARED_CORE" "--enable-shared=ssl" "--enable-module=so" "$@"
cd ../apache_1.3.27
make
make install
<IfModule mod_weblogic.c>
MatchExpression *.jsp
Include weblogic.conf
</IfModule>
WebLogic Server に接続するときに、Apache HTTP Server プラグインは複数のコンフィグレーション パラメータを使用して WebLogic Server ホストへの接続の待ち時間と、接続確立後の応答の待ち時間を判断します。接続できないか、応答がない場合、このプラグインはクラスタ内の別の WebLogic Server インスタンスに接続してリクエストを送信しようとします。接続が失敗するか、クラスタ内のどの WebLogic Server からも応答がない場合は、エラー メッセージが送信されます。
接続のフェイルオーバ図 2-1は、プラグインがどのようにフェイルオーバを処理するのかを示しています。
接続要求に WebLogic Server ホストが応答できない場合は、ホスト マシンの問題やネットワークの問題など、サーバに障害があることが考えられます。
すべての WebLogic Server インスタンスが応答できない場合は、WebLogic Server が動作していないことや、サーバのハング、データベースの問題など、アプリケーションに障害があることが考えられます。
クラスタ化されていない単一 WebLogic Server でのフェイルオーバ
WebLogic Server のインスタンスが 1 つだけ動作している場合、プラグインは WebLogicHost パラメータで定義されているサーバにのみ接続しようとします。その試行が失敗すると、HTTP 503 エラー メッセージが返されます。プラグインは、ConnectTimeoutSecs を超えるまでその同じ WebLogic Server インスタンスへの接続を試み続けます。
WebLogicCluster パラメータで WebLogic Server のリストを指定すると、プラグインではクラスタ メンバー間でのロード バランシングの起点としてそのリストが使用されます。最初のリクエストがそれらのサーバの 1 つに転送された後に、クラスタ内のサーバの更新されたリストを格納する動的サーバ リストが返されます。更新されたリストはクラスタ内の新しいサーバを追加し、すでにクラスタから外れているか、リクエストに応答できなかったサーバを削除します。このリストは、クラスタで変更が行われたときに HTTP 応答によって自動的に更新されます。
リクエストがクッキー、POST データ、または URL エンコーディングを通じてセッション情報を格納している場合、そのセッション ID にはセッションが最初に確立された特定のサーバ (プライマリ サーバ) への参照と元のセッションがレプリケートされる追加サーバ (セカンダリ サーバ) への参照が含まれています。クッキーが含まれているリクエストは、プライマリ サーバに接続しようとします。その試行が失敗すると、リクエストはセカンダリ サーバに転送されます。プライマリ サーバとセカンダリ サーバが両方とも失敗すると、セッションが失われて、プラグインは動的クラスタ リストの別のサーバにあらためて接続しようとします。詳細については、接続のフェイルオーバ図 2-1を参照してください。
注意: POST データが 64K を超える場合、プラグインは、セッション ID を取得するための POST データの解析を行いません。したがって、セッション ID を POST データに格納した場合、プラグインはリクエストを正しいプライマリまたはセカンダリ サーバにルーティングできないので、セッション データが失われる可能性があります。
*赤いループで許可される再試行の限度は、次の式で計算されます。
ConnectTimeoutSecs ÷ ConnectRetrySecs
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |