Apache HTTP サーバ バージョン 2.4

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.4 > バーチャルホスト

# 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 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ラッパーを使っている場合は、 `SuexecUserGroup` ディレクティブを VirtualHost ディレクティブの中で使用することができます。

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