一、虛拟主機
1、什麼是虛拟主機
是一種讓單一伺服器可以運作多個網站或服務的技術。虛拟并非指不存在,而是指空間是由實體的伺服器延伸而來,其硬體系統可以是基于伺服器群,或者單個伺服器。
2、使用虛拟主機的目的
1)友善管理
所有的虛拟主機都在同一部主機中,是以彼此可以共用相同的組态設定,借此節省管理的人力與成本
2)提高性能
相同主機内的虛拟主機可以共用彼此的程式集(Process Pool),是以可以縮短對用戶端的回應時間
3)降低成本
虛拟主機使得單一伺服器的資源可以被更有效的利用,包括存儲器、存儲空間或處理器資源。因為通常服務單一網址所需的資源對整部伺服器來說相當小,如此可讓伺服器的資源被更有效的利用。
多個虛拟伺服器,可以通過軟體架設在同一個實體伺服器上,而每個虛拟伺服器有可以提供伺服器的所有功能,這樣相對來說每個虛拟伺服器的成本有一定程度的降低。
3、虛拟主機的實作方法
我們在通路一個網絡中的站點時,輸入的是域名,而每一個域名對應的是一個IP和端口,是以對于虛拟主機的實作,主要有三種方式
1)基于不同的IP實作不同的虛拟主機
實作過程基于IP的變化
如果你有多個站點的需要被通路的時候,而且使用了這種基于IP位址的,就是一個站點對應一個IP,那勢必有點太浪費IP了,而且現在的IPv4已經消耗待盡,每年的使用費也不少啊,當然,土豪公司就不用這麼糾結了。
2)基于不同的port實作不同的虛拟主機
實作過程基于端口的變化
網絡封包在傳輸過程中是基于IP+port的,以實作它的唯一性,是以除了變化IP可以實作虛拟主機外,通過端口的變化也是可以實作的。不過在通路網際網路是,預設的都是80端口,如果你基于port變化,那别人在通路過程中,還需要輸入端口号,這不是畫蛇添足嗎?不過,你也可以通過URL重寫,實作将指定的端口跳到80端口上,這當然就不如這裡介紹的第三種方法友善了。
3)基于不同的FQDN實作不同的虛拟主機
實作過程基于ServerName的變化
在網絡的通路過程中,當封包到達服務端以後,核心要負責拆掉IP封包的下四層封裝,TCP、IP的都要拆掉,然後再交給使用者空間的程式,而封包中除了有TCP和IP的封裝,還有http的請求首部,請求首部中有一項叫HOST,裡面寫的就是在浏覽器中輸入的主機名,是以,我們完全可以通過根據不同的FQDN來實作在單台伺服器上提供多個端點。而這種方法也正是目前各IDC們所使用的方法,你個人想要建立一個網站,難道還要買伺服器,再托管到機房嗎?NO,你所需要做的就是申請一個域名,再到淘寶買一個空間做綁定就可以了,而他們提供給你的,其實就是一個虛拟主機。
二、虛拟主機的實作過程
本次過程基于httpd2.2實作,httpd2.4的實作過程和2.2的稍微有些不一樣,它是把虛拟主機的那一項從主配置檔案中單獨拿出來了,但是實作原理還是一樣的,隻要開啟相應的子產品就可以了。虛拟主機在以後的使用過程中還再次會用到的,從此就都以2.4為準了。對于本文中的DNS配置,這裡隻做配置,不做說明,原理及詳細介紹,請參考我的部落格中關于DNS系列的博文。
案例說明:www.a.com,www.b.com,www.c.com,三個站點放在同一台伺服器上,基于DNS實作
1、為三個站點建立三個區域
<a href="http://s3.51cto.com/wyfs02/M01/23/01/wKiom1MuOJqzjLhfAAAiBUCJ7JA889.png" target="_blank"></a>
2、建立三個站點的區域檔案資料庫并填寫資源記錄,三個站點的IP和DNS都相同,隻有主機名不同
1)建立a.com的區域檔案資料庫并填寫資源記錄
<a href="http://s3.51cto.com/wyfs02/M00/23/03/wKioL1MuOMeBKatIAAAmkPX4MFE729.png" target="_blank"></a>
2)建立b.com的區域檔案資料庫并填寫資源記錄
<a href="http://s3.51cto.com/wyfs02/M02/23/01/wKiom1MuOQqRciShAAAm_0Dqpc4037.png" target="_blank"></a>
3)建立c.com的區域檔案資料庫并填寫資源記錄
<a href="http://s3.51cto.com/wyfs02/M01/23/03/wKioL1MuOPbwJs4gAAAmjTFNscs915.png" target="_blank"></a>
3、檢查DNS是否可以解析三個站點
<a href="http://s3.51cto.com/wyfs02/M01/23/01/wKiom1MuOkqjzJCQAABpAtUMISQ483.png" target="_blank"></a>
www.com.com解析成功,另外www.b.com和www.c.com也可以解析成功,這裡就不再上圖了
4、修改httpd的主配置檔案
虛拟主機的實作首先要關閉中心主機,關閉中心主機,隻需要把/etc/httpd/conf/httpd.conf中的DocumentRoot注釋掉就可以了,這裡的這個主配置檔案是httpd預設的位置,如果你在安裝httpd過程中選擇了指定位置,隻需要找你的主配置檔案就可以了。
1)關閉中心主機
<a href="http://s3.51cto.com/wyfs02/M00/23/03/wKioL1MuO2ygnJm3AABMXqtrtdE140.png" target="_blank"></a>
2)配置VirtualHost,在httpd2.2中,NameVirtualHost這一項需啟用,而且那個*:80需要和下面的各個VirtualHost中的保持一樣,如果是*:80,就都是*:80;如果是IP:80,則都需要是IP:80。在httpd2.4中不需要此項。
<a href="http://s3.51cto.com/wyfs02/M02/23/01/wKiom1MuO8CRwogbAAChfH9GjOY561.png" target="_blank"></a>
5、啟動httpd服務和named服務,并檢查端口是否已經成功監聽
<a href="http://s3.51cto.com/wyfs02/M00/23/03/wKioL1MuPMCj1xI2AABt_C5s1X0941.png" target="_blank"></a>
6、測試
1)為了證明實驗的有效性和真實性,這裡的測試去windows用戶端中進行,并把DNS伺服器的位址改為剛才配置的伺服器的IP位址
<a href="http://s3.51cto.com/wyfs02/M02/23/01/wKiom1MuPVqicQcbAADWAFtRdA4751.png" target="_blank"></a>
2)通路下三個站點試試
<a href="http://s3.51cto.com/wyfs02/M01/23/03/wKioL1MuPWHQNJo7AAEBRss_XUY349.png" target="_blank"></a>
三個站點都可以通過DNS解析正常通路,實驗成功,OK!
本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1381700,如需轉載請自行聯系原作者