from:http://freebsd.lab.mlc.edu.tw/apache/VirtualHost.shtml
- 目的:
- 僅使用一個IP,只在DNS上設定不同的別名(CNAME),並將每一個別名分別架設成獨立的網站。實際上,這些不同的獨立網站都架設在同一個IP的主機上。
- 申請個人網域後(xxx.idv.tw),在原有主機上(xxx.xx.xxx.xxx)加設虛擬主機為個人網站(http://xxx.xxx.idv.tw/)。
- 變換成 root 身份操作:
su - root - 更改DNS正解檔的內容,設定虛擬網站所對應的別名(CNAME): dns IN A xxx.xx.xxx.xxx 這個IP的名稱是dns,是本尊;
www IN CNAME dns 這是第一個別名(CNAME)--分身;
www1 IN CNAME dns 這是第二個別名(CNAME)--分身;
www2 IN CNAME dns 這是第三個別名(CNAME)--分身。
- 修改完DNS的設定後,要記得將序號累進並ReLoad. kill -HUP `cat /var/run/named.pid`
- httpd.conf的修改:
- 重新啟動 Apache
- 測試一下吧:
- 我可沒騙你喔,請用nslookup查一下上述四個網址,其結果均會回應同一個IP。
- 成功與否的主要關鍵:
### Section 3: Virtual Hosts # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. # Please see the documentation at <URL:http://www.apache.org/docs/vhosts/> # for further details before you try to setup virtual hosts. # You may use the command line option '-S' to verify your virtual host # configuration. # # If you want to use name-based virtual hosts you need to define at # least one IP address (and port number) for them. # # 宣告虛擬網站所要使用的IP NameVirtualHost xxx.xx.xxx.xxx # 第一個虛擬網站(即原來的主網站名稱) <VirtualHost www.dnes.mlc.edu.tw> DocumentRoot /usr/local/www/data ServerName www.dnes.mlc.edu.tw </VirtualHost> # 第二個虛擬網站 <VirtualHost www1.dnes.mlc.edu.tw> DocumentRoot /home/tch/tim/www/www1 ServerName www1.dnes.mlc.edu.tw </VirtualHost> # 第三個虛擬網站 <VirtualHost www2.dnes.mlc.edu.tw> DocumentRoot /home/tch/tim/www/www2 ServerName www2.dnes.mlc.edu.tw </VirtualHost> # 第四個虛擬網站,向TWNIC申請個人網域後,在此設定虛擬主機。 <VirtualHost xxx.xxx.idv.tw> ServerAdmin root@dnes.mlc.edu.tw DocumentRoot /home/tch/tim/public_html ServerName xxx.xxx.idv.tw DirectoryIndex xxxxxx.htm </VirtualHost> # 這個動作有點像公司行號註冊一個網域名稱後,再向ISP租用主機一樣。
apachectl restart
http://www.dnes.mlc.edu.tw/
http://www1.dnes.mlc.edu.tw/
http://www2.dnes.mlc.edu.tw/
http://tim.bsdlab.idv.tw/
您的DNS是否自行控管是虛擬網站能否成功的最大關鍵,DNS有自行控管,就能隨心所欲地設定相關主機的正解對應資料,後續Apache的設定才能生效。不然,您得必須有一個配合度很高的ISP了。