天天看點

httpd系列之二:基于FQDN實作VirtuaHost

一、虛拟主機

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,如需轉載請自行聯系原作者