バーチャルホストの設定

Apacheでは2種類のバーチャルホストをサポートしています。IPベースバーチャルホストとネームベースバーチャルホストです。
ここでは、 それぞれのバーチャルホストの解説・設定を説明します。

解説

IPベースのバーチャルホストはすべてのブラウザで動作しますが、ネームベースのバーチャルホストは、HTTP/1.1プロトコルに依存しています。
しかし、HTTP/1.1プロトコルはほとんどのブラウザでサポートされているので問題はないと思います。
また、ネームベースのバーチャルホストは、ホストの数に制限がほとんどないのでバーチャルホストの利用はこちらをおすすめします。
一方、IPベースのバーチャルホストの設定はネットワークのIPアドレスが定義されるのでIP数で制限されます。

(1)IPベースバーチャルホスト
メリット:ブラウザ依存が無い
デメリット:設定するホスト数ごとにIPが必要

(2)ネームバーチャルホスト
メリット:IP1つで複数のホストが設定できる
デメリット:HTTP/1.1プロトコルに依存する

バーチャルホストを利用するにはという特別なコンテナを使用します。
基本は

<VirualHost IPアドレス>
    DocumentRoot等の設定
</VirualHost>

からなります。 VirualHost内ではDocumentRoot命令、ServerName命令、ErroLog命令、TransferLog命令など、ほぼ全ての命令が設定できます。
例外としては

ServerType,StartServers,MaxSpareServers,MinSpareeServers,MaxRequestsPerChild BindAddress,Listen,PidFile,TypesConfig,ServerRoot,NameVirualHost命令です。
詳しくはhttpd.conf解説をご覧ください。

IPベースバーチャルホストの設定

以下の設定では、ホストwww.example.comwww.example.netがIPベースで稼働しています。

<VirtualHost 192.168.0.10>
    ServerAdmin webmaster@example.com
    DocumentRoot /home/examplecom/public_html
    ServerName www.example.com
    ErrorLog /home/examplecom/logs/error_log
    CustomLog /home/examplecom/logs/access_log common
</VirtualHost>

<VirtualHost 192.168.0.20>
    ServerAdmin webmaster@example.net
    DocumentRoot /home/examplenet/public_html
    ServerName www.example.net
    ErrorLog /home/examplenet/logs/error_log
    CustomLog /home/examplenet/logs/access_log common
</VirtualHost>

この設定では、192.168.0.10からのみwww.example.comの領域へアクセスができ、192.168.0.20からはwww.example.netの領域へアクセス可能です。

もちろん、httpd.confを修正したらapacheをリスタートしてください。

ネームバーチャルホストの設定

以下の設定ではホストwww.example.comwww.example.netがネームベースで稼働しています。設定はIPベース同様に非常に簡単です。

NameVirtualHost 192.168.0.10                            (1)

<VirtualHost 192.168.0.10>
    ServerAdmin webmaster@example.com
    DocumentRoot /home/examplecom/public_html
    ServerName www.example.com
    ErrorLog /home/examplecom/logs/error_log
    CustomLog /home/examplecom/logs/access_log common
</VirtualHost>

<VirtualHost 192.168.0.10>
    ServerAdmin webmaster@example.net
    DocumentRoot /home/examplenet/public_html
    ServerName www.example.net
    ErrorLog /home/examplenet/logs/error_log
    CustomLog /home/examplenet/logs/access_log common
</VirtualHost>

(1)ネームバーチャルを使うIPの宣言

この設定でHTTP/1.1に対応しているブラウザからこれらのバーチャルホストをリクエストするとApacheはリクエストのHostヘッダから取得したホスト名とServerNameのマッチングを行い対象となる領域へアクセスができます。
HTTP/1.1に対応していないブラウザのアクセスは一番上に定義してある領域へアクセスしてしまうようです。

もちろん、httpd.confを修正したらapacheをリスタートしてください。

現在の大手ベンダーのブラウザのほとんどがHTTP/1.1に対応していますのでネームベースでの構築が主流ですね。
これでバーチャルホストの設定は完了です。

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.