バーチャルホストは単独のサーバで複数のドメインのWebページを公開する方法です。
これを実現するための設定方法について解説します。
ネームバーチャルホストとIPバーチャルホストがありますが、ここではネームバーチャルホストの設定方法を解説します。
DNSサーバ、Webサーバ、プロキシサーバについて、設定が必要になります。
ash.jpのWebサーバに、別のドメイン名(ここでは、***.ash.jpと***.co.jpとする)を追加するとします。
複数のドメイン名が、同じサーバを参照するようにDNSを設定します。 DNSの基本的な設定については、DNSサーバ構築を参照してください。
***.ash.jpなど、サブドメインを追加する場合の設定例です。 /etc/dns/ash.zoneに、以下のような行を追加します。
*** IN CNAME name |
その後、namedを再起動する必要があります。
***.co.jpなど、独自のドメインを設定する場合です。
ドメイン名そのものはあらかじめ登録しておかねばなりません。
ドメイン申請方法を参照してください。
まず、ocnなどの上流DNSに、***.co.jpを登録します。
次に、/etc/dns/下に、***.zoneを作ります。
; @(#)***.zone 1.0 (***.co.jp) ; ;$ORIGIN ***.co.jp. @ IN SOA name.ash.jp. root.***.co.jp. ( 1999090901 ; Serial 3600 ; Refresh after 1 hour 300 ; Retry after 5 minutes 604800 ; Expire after 1 week 14400 ) ; Minimum TTL of 4 hour IN NS name.ash.jp. IN MX 10 mail.***.co.jp. IN A 210.154.87.18 ; www IN A 210.154.87.18 mail IN A 210.154.87.18 |
そして、named.confにおいて、その***.zoneを参照するように設定を追加します。
zone "***.co.jp" { type master; file "***.zone"; }; |
その後、namedを再起動します。
バーチャルホストを実現するためのapacheの設定です。
httpd.confに以下のように追記します。
WebサーバのIPアドレスが10.0.1.1であり、***.ash.jpで見せたいアドレスを、/usr/local/apache/htm/***とした場合の例を示します。
NameVirtualHost 10.0.1.1 <VirtualHost 10.0.1.1> ServerAdmin ***@ash.jp DocumentRoot /usr/local/apache/htm/*** ServerName ***.ash.jp ErrorLog /usr/local/var/apache/log/error.log TransferLog /usr/local/var/apache/log/access.log </VirtualHost> |
httpd.confに以下のように追記します。
WebサーバのIPアドレスが10.0.1.1であり、***.co.jpで見せたいアドレスを、/usr/local/apache/htm/***とした場合の例を示します。
NameVirtualHost 10.0.1.1 <VirtualHost 10.0.1.1> ServerAdmin ***@ash.jp DocumentRoot /usr/local/apache/htm/*** ServerName ***.co.jp ErrorLog /usr/local/apache/htm/***/error.log TransferLog /usr/local/apache/htm/***/access.log </VirtualHost> |
Webサーバがローカルネットにあり、DeleGateで中継している場合は、DeleGateの設定を追加しなければいけません。
バーチャルホストは、host名の文字列によって別のページに分岐します。
しかし、基本的にDeleGateはその情報を中継しないので、中継するように設定しなければいけません。
プロキシサーバ設定方法も参照してください。
80番ポートの起動時に、以下のような設定で起動するようにします。
/usr/local/sbin/delegated -P80 SERVER='http://10.0.1.1' \ MOUNT='/* http://10.0.1.1/* host=-***.co.jp,genvhost=***.co.jp' \ MOUNT='/* http://10.0.1.1/* host=-***.ash.jp,genvhost=***.ash.jp' \ OWNER=wmaster \ PERMIT='*:10.0.1.1:*' \ AUTH="forward:*:" \ ACTDIR=/usr/local/etc/delegate \ VARDIR=/usr/local/etc/delegate \ |
mount機能を使って、ホスト名の文字列が***.co.jpだったとき(host=-***.co.jp)、***.co.jpという文字列をWebサーバに送る(genvhost=***.co.jp)という設定です。
ブラウザを起動して、***.co.jpや***.ash.jpでページが見れることを確認します。
ただし、DNS情報がセカンダリに反映されるのには少し時間がかかることには注意して下さい。