Virtual Host 的功能是能讓你將不同的 domain name 對到同一台機器上,但是能依照不同的 domain 來顯示不同的資訊。例如你擁有這三個網址:
http://www.zeroplex.orz/
http://mail.zeroplex.orz/
http://game.zeroplex.orz/
但是你可以讓這些網址全部連到同一台機器,但是根據網址不同,讓一個看到的是首頁、一個是電子郵件服務、另一個是遊戲下載。
Apache 有提供這項功能 (之後簡稱 vhost),只要把設定檔後面一段語法的注解取消掉就可以了。
/usr/local/etc/apache22/httpd.conf :
# Virtual hosts
Include etc/apache22/extra/httpd-vhosts.conf
設定檔大概會長的像這個樣子:
<VirtualHost *:80>
ServerAdmin your.mail@mail.com
DocumentRoot /www/game/
ServerName game.zeroplex.orz
ErrorLog /var/log/http-error_log
CustomLog /var/log/http-access_log common
</VirtualHost>
- ServerAdmin:管理員的電子郵件信箱
- DocumentRoot:你這個網址要以哪個目錄做為根目錄
- ServerName:你使用的 domain name
- ServerAlias:domain name 的 Alias
- ErrorLog、CustomLog:記錄檔可以使用原本的也可以另外存放
vhost 設定好了以後不要忘記設定資料夾的權限:
<VirtualHost *:80>
ServerAdmin your.mail@mail.com
DocumentRoot /www/game/
ServerName game.zeroplex.orz
ErrorLog /var/log/http-error_log
CustomLog /var/log/http-access_log common
<Directory "/www/game/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
存檔以後 appachectl restart 即可。
當你有多個 vhost 時,使用這個方法會讓你的設定檔落落長,之後要修改也會變的非常麻煩。cookys 提供了一個不錯的管理方法,先在 httpd.conf 中加上:
Include /usr/local/etc/apache22/vhosts/*.conf
之後把所有設定檔存放在 vhosts 目錄下即可:
www.zeroplex.orz.conf
mail.zeroplex.orz.conf
game.zeroplex.orz.conf
參考資料:
http://httpd.apache.org/docs/1.3/vhosts/
http://wiki.debian.org.hk/w/Virtual_hosting_with_Apache