仮想ホストの使用

Apache の仮想ホスト機能を使用すれば、IP アドレス毎、ホスト名毎、またはポート毎に、同一マシン上で別々のサーバを動作させることができます。仮想ホストを使用することに興味がある場合は、マシン上または Web http://www.apache.org/docs/vhosts/ 上にある Apache マニュアルの中に完全な情報が用意されています。

注意:: 名前ベースの仮想ホストを Red Hat Linux Secure Web Server と併用できないのは、適切な名前ベースの仮想ホストを識別するための HTTP 要求の前に SSL ハンドシェークが (ブラウザがセキュアな Web サーバの証明書を受け付ける時に) 出現するためです。名前ベースの仮想ホストを使用したい場合、それらのホストはセキュアでない Web サーバについてしか機能しなくなります。

the section called httpd.conf に含まれる設定ディレクティブ で説明したように、仮想ホストの設定は、httpd.conf ファイルの中で行われます。マシン上で仮想ホストの設定を変更する前に、上記のセクションを見直してください。

Red Hat Linux Secure Web Server 仮想ホスト

Red Hat Linux Secure Web Server のデフォルト設定では、セキュアでないサーバとセキュアサーバが動作します。どちらのサーバも同じ IP アドレスとホスト名を使用しますが、リスニングするポートが異なります。また、セキュアサーバは仮想ホストです。この設定を使用することにより、考えられる中で最も効果的な方法で、セキュアな文書とセキュアでない文書の両方を提供することができます。ご存知のように、セキュアな HTTP 伝送は、セキュアでないものよりも時間を多く消費します。なぜならば、セキュアなトランザクションではより多くの情報がやりとりされるからです。したがって、セキュアでない Web トラフィックに関してセキュアサーバを使用するのは良い考えではありません。

セキュアサーバに関する設定ディレクティブは、httpd.conf ファイルの仮想ホストタグの中に含まれています。セキュアサーバの設定について何かを変更する必要が生じた場合、httpd.conf.ssl ファイルの仮想ホストタグの内側にある設定ディレクティブを変更する必要がありますセキュアサーバに関する一定の機能 (たとえば、Server Side Include) を有効化したい場合には、セキュアサーバを定義する仮想ホストタグの中でそれらの機能を有効化する必要があります。

「非仮想」ホストとしてのセキュアでない Web サーバの設定は、httpd.conf ファイルの中で行われます。つまり、セキュアでない Web サーバの設定オプションは、httpd.conf ファイルの仮想タグの外側で行われます。セキュアでない Web サーバに関して何かを変更したい場合は、httpd.conf の中の仮想ホストタグの外側で設定ディレクティブを変更する必要があります。

デフォルトで、セキュアな Web サーバとセキュアでない Web サーバは、両方とも同じ DocumentRoot、すなわち httpd.conf で指定された設定ディレクティブ、を共有します。言い換えると、要求に対する応答として HTML ファイルを提供する際に、セキュアな Web サーバもセキュアでない Web サーバも同じ場所を検索します。デフォルトで、DocumentRoot/var/www/html と設定されています。

セキュアサーバとセキュアでないサーバによる共有をやめさせるために httpd.conf を変更するには、DocumentRoot ディレクティブのいずれかを変更します。仮想ホストタグの外側にある DocumentRoot によって、セキュアでない Web サーバ用の DocumentRoot が定義されます。セキュアサーバを定義する仮想ホストタグの中の DocumentRoot は、(明らかに) セキュアな Web サーバに関するものです。

何らかの理由のためにセキュアでない Web サーバをマシン上で無効化したい場合には、無効化することができます。セキュアサーバはセキュアな Web 通信用のデフォルトのポートであるポート 443 上でリスニングし、セキュアでない Web サーバはセキュアでない Web 通信用のデフォルトのポートであるポート 80 上でリスニングします。セキュアでない Web サーバが接続を受け付けるのを止めるには、httpd.conf の中で以下のような行を探します。

Port 80

上記の行を以下のように変更します。

Port 443

次に、Listen 80 の行をコメントアウトします。

Listen 80

上記の行を以下のように変更します。

#Listen 80

上記 2 つのステップを実行した後でも、Red Hat Linux Secure Web Server は引き続きセキュアな Web 通信用のデフォルトのポートである、ポート 443 で接続を受け付けます。ただし、サーバはセキュアでない通信用のデフォルトのポートであるポート 80 では接続を受け付けなくなるので、事実上セキュアでない Web サーバが無効化されます。

仮想ホストのセットアップ

ほとんどのユーザは、おそらく Red Hat Linux Secure Web Server を出荷状態で使用することでしょう。したがって、ユーザはビルトインの仮想ホスト機能を使用することになりますが、httpd.conf の仮想ホストディレクティブを操作する必要は生じないでしょう。ただし、何か別の理由のために仮想ホスト機能を使用したくなった場合には、使用することができます。

仮想ホストを作成するためには、例で示したように、httpd.conf の仮想ホストの行を変更するか、または独自の仮想ホストセクションを作成する必要があります。(名前ベースの仮想ホストがセキュアな Web サーバの場合に機能しないことを思い出してください - SSL 対応の仮想ホストが必要な場合には、IP アドレスベースの仮想ホストを使用する必要があります。ただし、セキュアでないサーバは、IP アドレスベースと名前ベースの両方の仮想ホストをサポートします。)

サンプルの仮想ホストの行は以下のようになります。

#<VirtualHost ip.address.of.host.some_domain.com>
#    ServerAdmin webmaster@host.some_domain.com
#    DocumentRoot /www/docs/host.some_domain.com
#    ServerName host.some_domain.com
#    ErrorLog logs/host.some_domain.com-error_log
#    CustomLog logs/host.some_domain.com-access_log common
#</VirtualHost>

すべての行を非コメント化します (各行の先頭にある # を削除します)。次に、マシンや仮想ホストに関する正確な情報を各行に追加します。

先頭行で、ip.address.of.host.some_domain.com を貴組織のサーバの IP アドレスに変更します。ServerName を、仮想ホストとして使用する 有効な DNS 名に変更します。(言い換えると、ごまかしはしないでください。有効なドメイン名の取得方法が分からない場合は、システム管理者に問い合わせてください。)

さらに、httpd.confNameVirtualHost の行のいずれかのコメント記号を削除する必要があります。

#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78

いずれかの行のコメント記号を削除し、IP アドレスを当該仮想ホストの IP アドレス (および必要であればポート) に変更します。

仮想ホストをセットアップする理由しだいでは、仮想ホストタグの間に、その他多数の設定ディレクティブを挿入することができます。

仮想ホストをセットアップしてそのホストにデフォルトポート以外のポート (セキュアでない Web 通信のデフォルトポートは 80、セキュアな Web 通信のデフォルトのポートは 443) でリスニングさせたい場合は、そのポート用の仮想ホストをセットアップし、そのポートと対応する Listen ディレクティブを httpd.conf に追加する必要があります。

特定のポートについて仮想ホストを機能させたい場合には、仮想ホスト設定の先頭行にそのポート番号を追加します。先頭行を以下のようにする必要があります。

<VirtualHost ip_address_of_your_server:12331>

この行により、ポート 12331 上でリスニングする仮想ホストが作成されます。上記の例において、12331 を実際に使用するポート番号と置き換えます。

httpd.confListen 行の下に、以下のような行を追加します。そうすることで、Web サーバに対してポート 12331 上でリスニングするように指示します。

Listen 12331

新しい仮想ホストを起動するためには、サーバを再起動しなければなりません。

名前ベースの仮想ホストと、IP アドレスベースの仮想ホストの作成および設定に関する詳細情報は、http://www.apache.org/docs/vhosts/index.html にあります。仮想ホストの使用法については、Apache グループの仮想ホストに関する文書をチェックしてください。