Apacheでは2種類のバーチャルホストをサポートしています。IPベースバーチャルホストとネームベースバーチャルホストです。
ここでは、 それぞれのバーチャルホストの解説・設定を説明します。
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解説をご覧ください。
以下の設定では、ホストwww.example.comとwww.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.comとwww.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に対応していますのでネームベースでの構築が主流ですね。
これでバーチャルホストの設定は完了です。