2008/05/10

Apache Virtual Host

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

沒有留言:

張貼留言