Apache HTTP サーバ バージョン 2.2
Apache の IP ベースのバーチャルホストサポート
システム要件
IP ベース という名前が示すように、サーバには IP ベースのバーチャルホストそれぞれにつき、別々の IP アドレスが 必要です。複数の物理コネクションを持っているマシンを用意するか、 最近のオペレーティングシステムでサポートされているバーチャル インタフェース (詳細はシステムの説明書を読んでください。たいていは "ip エイリアス" と呼ばれていて、設定には普通 "ifconfig" コマンドを 使います) を使うかで実現できます。
Apache の設定方法
複数のホストをサポートするように Apache を設定する方法は
二通りあります。別の httpd
デーモンを各ホスト毎に実行するか、
すべてのバーチャルホストをサポートするデーモンを一つ実行するかです。
以下のときには複数のデーモンを使うと良いでしょう:
- 会社1 はウェブ経由以外では会社2 からはデータを読まれたくない、
といったセキュリティの分離の問題があるとき。この場合、それぞれ
User
,Group
,Listen
,ServerRoot
の設定が違う二つのデーモンを 実行する必要があります。 - マシンのすべての IP エイリアスを listen するだけの
メモリとファイル記述子の余裕があるとき。
Listen
は「ワイルドカード」 アドレスか、特定のアドレスのみを listen することができます。 ですから、何らかの理由で特定のアドレスを listen しなけばならない ときは、その特定のアドレスをすべて listen する必要があります。 (ただし、一つのhttpd
が N-1 個のアドレスを listen し、 別のhttpd
が残りのアドレスを listen するといったことは可能です。)
以下のときには単独のデーモンを使うと良いでしょう:
- バーチャルホスト間での httpd の設定を共有してもよいとき。
- マシンが多くのリクエストを扱うため、別デーモンを実行することによる 性能の低下の影響が著しいとき。
複数デーモンの設定
各バーチャルホストに対して別の httpd
のインストールを行ないます。
設定ファイル中の Listen
ディレクティブを使って、
各インストールでデーモンが扱う IP アドレス (バーチャルホスト)
を選択します。例えば
Listen www.smallco.com:80
ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに 注意しておいてください (DNS の注意事項 参照)。
複数のバーチャルホストの設定をした デーモンを一つ設定する
この場合は、一つの httpd
が主サーバとすべてのバーチャルホストのリクエストを
処理します。設定ファイルの VirtualHost
ディレクティブを使って、
ServerAdmin
, ServerName
, DocumentRoot
, ErrorLog
, TransferLog
や CustomLog
設定ディレクティブの値が各ホスト毎に異なる値に設定されるようにします。
例えば
<VirtualHost www.smallco.com>
ServerAdmin [email protected]
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 [email protected]
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ラッパーを使っている場合は、
SuexecUserGroup
ディレクティブを VirtualHost
ディレクティブの中で使用することができます。
セキュリティ: ログファイルを書く場所を指定するときは、 Apache を起動したユーザ以外がそのディレクトリに書き込み権限を 持っている場合にセキュリティ上の危険があることに注意してください。 詳細はセキュリティのこつドキュメントを 参照してください。