VirtualHostの設定
■ VirtualHostとは
apacheでは、「VirtualHost」を設定することで、アドレスによって設定を分けることができます。たとえば
- hoge.com、fuga.org、guho.jpはすべて同じサーバを指している
- http://hoge.com/
- /home/hoge/public_htmlを表示
- http://fuga.org/
- /home/fuga/public_htmlを表示
- http://guho.jp
- /usr/local/wwwを表示
というように、アクセスに使われたサーバ名によって表示する内容(をはじめとする設定全般)を使い分けることができます。
こうすると、あたかも別々のサーバで動いているかのように見せることができます。
■ 設定
次の設定を、httpd.confに書き加えます。
WebサーバのIPが192.168.1.1であるとします。
# VirtualHostを使うよーという指示 NameVirtualHost 192.168.1.1
さらに、各VirtualHostごとの設定を書きます。
# 例えばhoge.comの設定 <VirtualHost 192.168.1.1> ServerAdmin hogeadmin@hoge.com DocumentRoot /home/hoge/public_html ServerName hoge.com ErrorLog logs/hoge.com-error_log CustomLog logs/hoge.com-access_log common </VirtualHost>
■ 文法チェック
$ apachectl configtest Syntax OK
■ VirtualHost設定のチェック
実際にどのようなVirtualHostが設定されたかは、次のように確認できます。
$ httpd -S
VirtualHost configuration:
192.168.1.1:80 is a NameVirtualHost
default server hoge.com (/usr/local/etc/apache/httpd.conf:1085)
port 80 namevhost hoge.com (/usr/local/etc/apache/httpd.conf:1085)
port 80 namevhost fuga.org (/usr/local/etc/apache/httpd.conf:1093)
port 80 namevhost guho.jp (/usr/local/etc/apache/httpd.conf:1106)
なお、このように設定されているとき、
- IPアドレスを直接指定してアクセス(http://192.168.1.1/)
- VirtualHostに設定されていない別のサーバ名でアクセス
した場合、最初のVirtualHostが使われます。つまり、この場合はhttp://hoge.com/にアクセスしたのと同じことになります。
なので、VirtualHostを使わずに運用していたWebサーバにVirtualHostを設定する場合、従来の設定を「1番目のVirtualHost」として改めて書いておく必要があります(そうしないと、従来通りのアドレスにアクセスしてもVirtualHostの方が優先されてしまいます)。
