バーチャルホスト機能は、環境定義ファイル(httpd.conf)において、IP/ポート番号ベースのバーチャルホスト(複数のIPアドレス/ポート番号を設定する)、またはネームベースのバーチャルホスト(1つのIPアドレスに対して複数のホスト名を設定する)を設定して、Webブラウザから複数のマシンを仮想的に利用します。
それぞれの環境定義ファイル(httpd.conf)の設定例を以下に示します。
■IPベースのバーチャルホスト
例
メインホスト“main.example.com”をIPアドレス“192.168.0.1”、バーチャルホスト“virt.example.com”をIPアドレス“192.168.0.2”として設定する場合
ServerAdmin webmaster@main.example.com ServerName main.example.com ... <VirtualHost 192.168.0.2> ServerName virt.example.com ServerAdmin webmaster@virt.example.com ... </VirtualHost>
バーチャルホスト“virt.example.com”をIPv6アドレス“2001:db8::a00:20ff:fea7:ccea”として設定する場合
ServerAdmin webmaster@main.example.com ServerName main.example.com ... <VirtualHost [2001:db8::a00:20ff:fea7:ccea]> ServerName virt.example.com ServerAdmin webmaster@virt.example.com ... </VirtualHost>
■ポート番号ベースのバーチャルホスト
例
バーチャルホスト“virt1.example.com”をポート番号“8000”、バーチャルホスト“virt2.example.com”をポート番号“9000”として設定する場合
ServerAdmin webmaster@main.example.com ServerName main.example.com ... Listen 8000 Listen 9000 <VirtualHost _default_:8000> ServerName virt1.example.com ServerAdmin webmaster@virt1.example.com ... </VirtualHost> <VirtualHost _default_:9000> ServerName virt2.example.com ServerAdmin webmaster@virt2.example.com ... </VirtualHost>
■IPおよびポート番号ベースのバーチャルホスト
例
バーチャルホスト“virt1.example.com”をIPアドレス“192.168.0.2”およびポート番号“8000”、バーチャルホスト“virt2.example.com”をIPアドレス“192.168.0.3”およびポート番号“9000”として設定する場合
ServerAdmin webmaster@main.example.com ServerName main.example.com ... Listen 192.168.0.2:8000 Listen 192.168.0.3:9000 ... <VirtualHost 192.168.0.2:8000> ServerName virt1.example.com ServerAdmin webmaster@virt1.example.com ... </VirtualHost> <VirtualHost 192.168.0.3:9000> ServerName virt2.example.com ServerAdmin webmaster@virt2.example.com ... </VirtualHost>
バーチャルホスト“virt1.example.com”をIPv6アドレス“2001:db8::a00:20ff:fea7:ccea”およびポート番号“8000”、バーチャルホスト“virt2.example.com”をIPv6アドレス“2001:db8::a00:20ff:fea7:cceb”およびポート番号“9000”として設定する場合
ServerAdmin webmaster@main.example.com ServerName main.example.com ... Listen 8000 Listen 9000 ... <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:8000> ServerName virt1.example.com ServerAdmin webmaster@virt1.example.com ... </VirtualHost> <VirtualHost [2001:db8::a00:20ff:fea7:cceb]:9000> ServerName virt2.example.com ServerAdmin webmaster@virt2.example.com ... </VirtualHost>
■ネームベースのバーチャルホスト
注意
SSLは、使用できません。
<VirtualHost>セクションとNameVirtualHostディレクティブには、同じ値を設定してください。
ServerNameディレクティブは、必ず設定してください。
クライアントからのリクエストは、<VirtualHost>セクション内に指定されたServerNameディレクティブで切り分けられます。
リクエストがServerNameディレクティブで切り分けられない場合(IPアドレスが指定された場合など)は、環境定義ファイル(httpd.conf)で設定されているネームベースのバーチャルホストの中で先頭のバーチャルホストがリクエストを受け付けます。
NameVirtualHostディレクティブで指定した“IPアドレス[:ポート番号]”で、クライアントからのリクエストを受け付けた場合、メインホストではなく、その“IPアドレス[:ポート番号]”のバーチャルホストで受け付けます。
メインホストのServerName、DocumentRootディレクティブなどの設定でリクエストを受け付けたい場合は、バーチャルホストとして新規に追加してください。<VirtualHost>セクションを作成し、メインホストのServerName、DocumentRootディレクティブなどを設定してください。
例
ネームベースのバーチャルホスト“virt1.example.com”および“virt2.example.com”を設定する場合
ServerAdmin webmaster@main.example.com ServerName main.example.com ... Listen 192.168.0.1:8000 NameVirtualHost 192.168.0.1:8000 <VirtualHost 192.168.0.1:8000> ServerName virt1.example.com ServerAdmin webmaster@virt1.example.com ... </VirtualHost> <VirtualHost 192.168.0.1:8000> ServerName virt2.example.com ServerAdmin webmaster@virt2.example.com ... </VirtualHost>
ネームベースのバーチャルホスト“virt1.example.com”および“virt2.example.com”を設定する場合(IPv6アドレス使用時)
ServerAdmin webmaster@main.example.com ServerName main.example.com ... Listen 8000 NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8000 <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:8000> ServerName virt1.example.com ServerAdmin webmaster@virt1.example.com ... </VirtualHost> <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:8000> ServerName virt2.example.com ServerAdmin webmaster@virt2.example.com ... </VirtualHost>