バーチャルホスト Apache の IP ベースのバーチャルホストサポート 名前ベースのバーチャルホストサポート
システム要件

IP ベース という名前が示すように、サーバには IP ベースのバーチャルホストそれぞれにつき、別々の IP アドレスが 必要です。複数の物理コネクションを持っているマシンを用意するか、 最近のオペレーティングシステムでサポートされているバーチャル インタフェース (詳細はシステムの説明書を読んでください。たいていは "ip エイリアス" と呼ばれていて、設定には普通 "ifconfig" コマンドを 使います) を使うかで実現できます。

Apache の設定方法

複数のホストをサポートするように Apache を設定する方法は 二通りあります。別の httpd デーモンを各ホスト毎に実行するか、 すべてのバーチャルホストをサポートするデーモンを一つ実行するかです。

以下のときには複数のデーモンを使うと良いでしょう:

以下のときには単独のデーモンを使うと良いでしょう:

複数デーモンの設定

各バーチャルホストに対して別の httpd のインストールを行ないます。 設定ファイル中の Listen ディレクティブを使って、 各インストールでデーモンが扱う IP アドレス (バーチャルホスト) を選択します。例えば

Listen www.smallco.com:80

ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに 注意しておいてください (DNS の注意事項 参照)。

複数のバーチャルホストの設定をした デーモンを一つ設定する

この場合は、一つの httpd が主サーバとすべてのバーチャルホストのリクエストを 処理します。設定ファイルの VirtualHost ディレクティブを使って、 ServerAdmin, ServerName, DocumentRoot, ErrorLog, TransferLogCustomLog 設定ディレクティブの値が各ホスト毎に異なる値に設定されるようにします。 例えば

<VirtualHost www.smallco.com>
ServerAdmin webmaster@mail.smallco.com
DocumentRoot /groups/smallco/www
ServerName www.smallco.com
ErrorLog /groups/smallco/logs/error_log
TransferLog /groups/smallco/logs/access_log
</VirtualHost>

<VirtualHost www.baygroup.org>
ServerAdmin webmaster@mail.baygroup.org
DocumentRoot /groups/baygroup/www
ServerName www.baygroup.org
ErrorLog /groups/baygroup/logs/error_log
TransferLog /groups/baygroup/logs/access_log
</VirtualHost>

ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに 注意しておいてください (DNS の注意事項 参照)。

プロセス生成を制御するディレクティブやその他のいくつかのディレクティブを 除いて、ほぼすべての設定ディレクティブを VirtualHost ディレクティブの中に書くことができます。ディレクティブが VirtualHost ディレクティブで使用できるかどうかは ディレクティブ索引を使ってコンテキストの 欄を調べてください。

suEXECラッパーを使っている場合は、 UserGroup ディレクティブを VirtualHost ディレクティブの中で使用することができます。

セキュリティ: ログファイルを書く場所を指定するときは、 Apache を起動したユーザ以外がそのディレクトリに書き込み権限を 持っている場合にセキュリティ上の危険があることに注意してください。 詳細はセキュリティのこつドキュメントを 参照してください。