WebSphere Application Server - Express for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

仮想ホスト

仮想ホストとは、単一のホスト・マシンを、複数のホスト・マシンに見せかけて使用できるようにする構成エンティティーです。処理する Multipurpose Internet Mail Extensions (MIME) タイプのリストを保守します。仮想ホストを 1 つ以上の Web モジュールに関連付けることができますが、各 Web モジュールは、1 つの仮想ホストにのみ関連付けることができます。ある仮想ホストに関連付けられたリソースと、 他の仮想ホストに関連付けられたリソースとは、それらの仮想ホストが物理的に同じマシンを共用している場合でも、 データを共用することはできません。

個々の仮想ホストには論理名があり、1 つ以上の DNS 別名のリストがあります。 仮想ホストはこの別名によって認識されます。DNS 別名は、TCP/IP のホスト名およびポート番号で、 サーブレットを要求する際に使用されます (例: yourHostName:80)。 ポート番号が指定されていない場合は、80 と想定されます。

仮想ホストの構成では、仮想ホスト項目のポートについてワイルドカード項目を使用します。

サーブレット、JavaServer Pages ファイル、 または関連するリソースに対するクライアント要求には、DNS 別名およびリソース固有の URI (Uniform Resource Indicator) が含まれます。 サーブレット、JavaServer Pages ファイル、または関連するリソースに対するクライアント要求が受信されると、 仮想ホストの正しい位置を指定するために、DNS 別名とすべての既知の仮想ホスト・グループのリストが比較されます。 また、URI グループの正しい位置を指定するために URI とすべての既知の URI グループが比較されます。 仮想ホスト・グループと URI グループが見つかれば、要求は対応するサーバー・グループに送信されて処理され、 ブラウザーに応答が戻されます。 マッチングする仮想ホスト・グループあるいは URI グループが見つからなければ、ブラウザーにエラーが返されます。

仮想ホストは特定のマシンと関連付けられているわけではありません。それはライブ・オブジェクトではなく一種の構成なので、 作成することはできても、開始したり停止したりすることはできません。 デフォルトの仮想ホスト、名前が指定された default_host は、アプリケーション・サーバーを最初に始動するときに自動的に構成されます。ユーザーが特に同一の物理マシン上のリソース同士を分離したいと思わない限り、デフォルト・ホスト以外に仮想ホストは必要ありません。

デフォルト仮想ホスト用の DNS 別名は、 *:80 および *:9080 に構成されています。 ポート 80 は HTTP サーバーのポートで、ポート 9080 はデフォルトのサーバーの HTTP トランスポート用のポートです。 デフォルト仮想ホストには、マシンの IP アドレス、短縮ホスト名、完全修飾ホスト名といった一般的な別名が組み込まれています。これらの別名には、サーブレットなどのリソースにアクセスするためのパスの最初の部分が含まれます。例えば、 要求 http://localhost:80/myServlet. では、 localhost:80 が別名です。

仮想ホストにローカル・ホストを追加すると、 別名テーブルにローカル・ホスト・マシンのホスト名と IP アドレスが追加されます。 これによって、リモート・ユーザーは、管理コンソールにアクセスできるようになります。

デフォルト以外のポートを使用したければ、管理コンソールを使用して、DNS 別名を追加または変更できます。DNS 別名を変更する場合は、Web サーバーのプラグイン構成を再生成する必要があります。 管理コンソールを使用して、プラグインの再生成を開始できます。

ベスト・プラクティス: 以下のような場合、追加の別名を追加したり、デフォルトの別名を変更した方がよいかもしれません。
  • HTTP サーバーのインスタンスは、ポート 80 以外で実行している場合。それぞれの別名に適切なポート番号を追加します。 例えば、yourhostyourhost:8000 に変更します。
  • Secure Sockets Layer (SSL) を使用する HTTPS 要求を生成する場合。 HTTPS 要求を生成するには、各別名にポート 443 を追加する必要があります。ポート 443 は、SSL 要求のためのデフォルトのポートです。
  • ご使用の Web サーバーのインスタンスが、443 以外のポート上で SSL 要求を listen している場合。この状況では、 それぞれの別名にそのポート番号を追加する必要があります。
  • アプリケーション・サーバー用にデフォルトのポート (9080) 以外を使用する場合。
  • リストにないその他の別名を使用する場合。
bprac

ユーザーがリソースを要求すると、WebSphere Application Server は、 その要求を定義済み仮想ホストの別名にマップしようとします。仮想ホストの http://host:port/ 部分では大/小文字を区別しませんが、 その後に続く URL では大/小文字を区別します。URL の英数字は正確に一致する必要があります。 ポート番号が異なると、別の別名として扱われます。

例えば、要求 http://www.myhost.com/myservlethttp://WWW.MYHOST.COM/myservlet には正常にマップされますが、 http://WWW.MYHOST.COM/MYSERVLET または Www.Myhost.Com/Myservlet には正常にマップされません。 後の 2 つの場合、マッピングは、大/小文字の区別が原因で失敗します。 要求 http://www.myhost.com/myservlet は、 http://myhost/myservlet または http://myhost:9876/myservlet には正常にマップされません。 これらのマッピングは、英数字が正確でないために失敗します。

ユーザーはポートごとの別名にワイルドカード項目を使用でき、特定のポートについて、ホスト名とアドレスのすべての有効な組み合わせを、特定の仮想ホストにマップするように指定できます。

定義済み仮想ホストの別名にマップできない別名を使用してユーザーがリソースを要求すると、 その要求の送信に使用したブラウザーでエラー 404 を受け取ります。メッセージにより、仮想ホストが見付からないことが伝えられます。

2 組の関連付けが仮想ホストに起こります。アプリケーション・デプロイメントはアプリケーションと仮想ホストとを関連付けます。 仮想ホストの定義では、マシンのネットワーク・アドレスおよび HTTP トランスポートまたはアプリケーション・サーバーの Web サーバー・ポート割り当てと、仮想ホストを関連付けます。 例えば、スヌープ・サーブレットの Web クライアント要求からのフローを参照してみると、以下のアクションが起こります。
  1. Web クライアントが Web アドレス http://www.some_host.some_company.com:9080/snoop でスヌープ・サーブレットを要求します。
  2. some_host マシンには、スタンドアロン・アプリケーション・サーバー server1 に割り当てられた 9080 ポートがあります。
  3. server1 は仮想ホスト割り当てを参照して、 別名 some_host.some_company.com:9080 に割り当てられる仮想ホストを決定します。
  4. アプリケーション・サーバーは、DNS ストリングの明示的な別名が存在しないことを検出します。 ただし、ポート 9080 でホスト名 * のワイルドカード割り当ては存在します。 これが一致します。その一致を定義する仮想ホストは、default_host です。
  5. アプリケーション・サーバーは default_host にデプロイされたアプリケーションを参照し、スヌープ・サーブレットを検出します。
  6. アプリケーション・サーバーは Web クライアントに対するアプリケーションを提供し、要求側はスヌープ・サーブレットを使用することができます。
仮想ホストの別名をいくつでも持つことができます。以下のように、別名が重複していても構いません。
仮想ホスト 別名 ポート
default_host * 9080
localhost 9080
my_machine 9080
my_machine.my_company.com 9080
localhost 80

Application Server は、Web クライアント・アドレスに指定される明示アドレスを使用して一致を検索します。 ただし、明示アドレスを突き合わせる前に、パターンが一致する別の別名との一致を検出できる場合があります。 別名のリストで最初に別名を定義するだけでは、 WebSphere Application Server が一致する別名を検索する際の検索順序が保証されるわけではありません。

2 つの異なる仮想ホストに同じ別名を使用している場合、問題が発生することがあります。 例えば、デフォルトのアプリケーションおよび default_host にスヌープ・サーブレットをインストールしていると想定します。 また、admin_host と呼ばれる別の仮想ホストも持っていますが、 admin_host にデフォルト・アプリケーションやスヌープ・サーブレットはインストールされていません。

以下のように、ポート 9060 の代わりに誤って admin_host のポート 9080 を定義したため、両方の仮想ホストに重複した別名を定義していると想定します。
仮想ホスト 別名 ポート
default_host * 9080
localhost 9080
admin_host * 9060
my_machine.com 9080

Web クライアント要求が http://my_machine.com:9080/snoop に来ると想定します。

アプリケーション・サーバーが *:9080 に対する要求と一致する場合は、 アプリケーションは default_host から提供されます。 アプリケーション・サーバーが my.machine.com:9080 に対する要求と一致する場合は、アプリケーションは見つかりません。 要求の発行元ブラウザーに 404 エラーが表示されます。 メッセージにより、仮想ホストが見付からないことが伝えられます。

この問題は、一致する別名がある最初の仮想ホストで要求されたアプリケーションを 見付けられなかった結果です。 別名をコード化する正しい方法は、着信要求の別名をご使用の 仮想ホスト定義すべてで、1 つの仮想ホストに一致させることです。 URL が複数の仮想ホストと一致する場合は、上記のような問題が発生します。




関連タスク
仮想ホストの構成
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 7:05:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.iseries.doc/info/iseriesexp/ae/ccws_vhost.html