• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    Apache下服務器虛擬主機設置方法介紹

    發布時間:  2012/8/11 10:49:51
     一、WWW服務器虛擬主機原理WWW服務器虛擬主機是指使用一臺物理機器,充當多個主機名的WWW服務器。比如由一臺機器同時提供http://www.company1.com,http://www.company2.com等的WWW服務,而瀏覽這些WWW站點的用戶感覺不到這種方式下跟由不同的機器提供不同的服務有什么差別。使用WWW虛擬主機的好處在于,一些小規模的網站,通過跟其他網站共享同一臺物理機器,可以減少系統的運行成本,并且可以減少管理的難度。另外,對于個人用戶,也可以使用這種虛擬主機方式來建立有自己獨立域名的WWW服務器,目前國內有很多公司都提供這種免費的服務。WWW虛擬主機有兩種工作方式:1.1基于IP地址的虛擬主機方式這種方式下,不同的主機名解析到不同的IP地址,提供虛擬主機服務的機器上同時設置有這些IP地址。服務器根據用戶請求的目的IP地址來判定用戶請求的是哪個虛擬主機的服務,從而進一步的處理。缺點:基于IP地址的虛擬主機方式需要在提供虛擬主機服務的機器上設立多個IP地址,既浪費了IP地址,又限制了一臺機器所能容納的虛擬主機數目。因此這種方式越來越少使用。但是,這種方式是早期使用的HTTP1.0協議唯一支持的虛擬主機方式。1.2基于主機名的虛擬主機方式由于基于IP地址的虛擬主機方式有如上的缺點,HTTP1.1協議中增加了對基于主機名的虛擬主機的支持。具體說,當客戶程序向WWW服務器發出請求時,客戶想要訪問的主機名也通過請求頭中的“Host:”語句傳遞給WWW服務器。比如,www.company1.com,www.company2.com都對應于同一個IP地址(即由同一臺機器來給這兩個虛擬域名提供服務),客戶程序要存取http://www.company1.com/index.html時,發出的請求頭中包含有如下的內容:GET/index.htmlHTTP/1.1Host:www.company1.com…..WWW服務器程序接收到這個請求后,可以通過檢查“Host:”語句,來判定客戶程序請求是哪個虛擬主機的服務,然后再進一步的處理。優點:提供虛擬主機服務的機器上只要設置一個IP地址,理論上就可以給無數多個虛擬域名提供服務,占用資源少,管理方便。目前基本上都是使用這種方式來提供虛擬主機服務。缺點:在早期的HTTP1.0版本下不能使用。實際上現在使用的瀏覽器基本上都支持基于主機名的虛擬主機方式。二、Apache服務器下的虛擬主機設置技術2.1ApacheWWW服務器簡介ApacheWWW服務器是目前Internet上使用最廣的WWW服務器軟件。通過靈活的配置,它可以完成幾乎您想得到的功能。本文主要介紹在Apache下設置各種虛擬主機的方法。2.2ApacheWWW服務器下基于IP地址的虛擬主機設置使用這種虛擬主機方式,首先要在服務器上為每個虛擬主機單獨設置一個IP地址。這些IP地址可以通過增加多個網卡或者在一個網卡上設立多個IP地址來完成。有了多個IP地址后,可以采用以下兩種方式之一來設置Apache:2.2.1為每個虛擬主機運行一份Apache采用這種方式,每一份Apache程序可以以單獨的用戶運行,因此各個虛擬主機之間互不影響。設置這種虛擬主機時,只要為每一份Apache設置一套配置文件就可以了,唯一需要注意的是:必須使用“Listen”語句,強制每一份Apache僅僅在屬于“自己”的IP地址上接收服務請求。優點:各個虛擬主機之間互不干擾,安全性高。缺點:占用系統資源較多。2.2.2多個虛擬主機共享同一份Apache采用這種方式,各個虛擬主機共享同一份Apache,因此各個虛擬主機之間有一定的影響,尤其是執行CGI程序時,可能會帶來一些嚴重的安全問題。設置這種虛擬主機時,只要為每一個虛擬主機設置類似如下的信息即可:

    <VirtualHostwww.company1.com>;DocumentRoot/home/company1…</VirrualHost>;優點:占用系統資源比上一種方式少。缺點:安全性低,每個虛擬主機仍然需要占用一個IP地址。2.3ApacheWWW服務器下簡單的基于名字的虛擬主機設置這種方式下,各個虛擬主機共享同一份Apache,因此有CGI程序運行時,安全性也不高。設置這種虛擬主機時,只要為每一個虛擬主機設置類似如下的信息即可
    NameVirtualHost111.222.33.44;在這個IP地址接收虛擬主機的服務<VirtualHost111.222.33.44>;ServerNamewww.company1.comDocumentRoot/www/company1</VirtualHost>;<VirtualHost111.222.33.44>;ServerNamewww.company2.comDocumentRoot/www/company2</VirtualHost>;優點:只要一個IP地址就可以提供大量的虛擬主機服務。缺點:安全性差。維護這些虛擬主機時需要更改配置文件,并且需要重新啟動Apache進程才能起作用。因此不適合進行大規模的虛擬主機服務。2.4ApacheWWW服務器下基于名字的大規模虛擬主機設置所謂大規模虛擬主機,是指能夠提供非常多的虛擬主機服務,比如能提供超過數十萬個域名的虛擬主機服務。如果使用以上討論的方法,是很難完成的。實現這種服務的一種方式是利用Apache功能強大的URL重寫功能。下面以一個實例來說明這種方式。2.4.1Apache中URL重寫功能Apache1.2及以后版本都有URL重寫(Rewrite)功能。簡單的說,URL重寫功能就是在Apache接收到請求后,在處理的過程中能根據預先設定的規則,對請求中的URL進行修改。這些規則主要由正規表達式組成。重寫依賴于輸入的URL、各種服務器端環境變量、HTTP請求頭中的內容、時間,甚至可以通過外部的程序來使用數據庫中的信息來幫助重寫。URL重寫功能非常強大,通過URL重寫,可以使Apache完成異常復雜的功能。當然,URL重寫功能本身也比較復雜,關于URL重寫功能的詳細說明可以參看Apache的隨機文檔。2.4.2使用Apache中URL重寫功能實現基于名字的大規模虛擬主機設置假設機器www.home.com提供名字形如abcde.home.com、hijk.home.com等的大規模虛擬主機服務。其中虛擬主機名必須是字母或數字,并且長度至少為3。為了防止一個目錄下文件或子目錄太多而對性能產生很大的負面影響,對用戶的目錄按照名字進行分級劃分,如虛擬主機abcde.home.com的相關文件存放在目錄/member/ab/de/abcde下面。其中“ab”、“de”分別是“abcde”的前邊兩個字符和最后兩個字符。當用戶請求http://abcde.home.com時,系統應該返回/member/ab/de/abcde下面的文件。


    下面是為了完成這種功能需要進行的設置1.對域名服務器的設置假設www.home.com的IP地址為202.103.190.57,在域名服務器DNS的home.com數據文件中增加一行:--------------------------------------------------------------------------------*INA202.103.190.57--------------------------------------------------------------------------------這樣,所有*.home.com的IP地址都會被解析為202.103.190.57,就沒有必要為各個虛擬主機分別進行設置。2.對Apache的設置首先使用命令“httpd-l”檢查mod_rewrite模塊是否已經編譯到Apache中,如果沒有,重新編譯Apache。然后在Apache的配置文件httpd.conf中增加如下語句(其中以“#”開頭的為注釋):--------------------------------------------------------------------------------#禁止使用機器的正式名UseCanonicalNameoff#使能重寫功能RewriteEngineonRewriteMaplowercaseint:tolower#為安全考慮,對CGI程序不進行重寫RewriteCond%{REQUEST_URI}!^/cgi-bin/#對www.home.com不重寫,其他的重寫RewriteCond${lowercase:%{HTTP_HOST}}!^www\.home\.com(\.*)$RewriteCond${lowercase:%{HTTP_HOST}}^[a-z0-9-]+\.home\.com(\.*)$#首先把機器名改為小寫,添加到請求的文件路徑前,并繼續處理RewriteRule^(.+)${lowercase:%{HTTP_HOST}}$1[C]#重寫請求RewriteRule^([a-z0-9])([a-z0-9])([a-z0-9])\.home\.com([\.]*)/(.*)/member/$1$2/$2$3/$1$2$3/$5RewriteRule^([a-z0-9])([a-z0-9])([a-z0-9]*)([a-z0-9])([a-z0-9])\.home\.com([\.]*)/(.*)/member/$1$2/$4$5/$1$2$3$4$5/$7---------------------------------------------------------------------------------優點:只要一個IP地址就可以提供大量的虛擬主機服務,維護方便。缺點:安全性低。上例為了增強安全性,禁止運行用戶自己的CGI程序。2.5ApacheWWW服務器下的重定向虛擬主機設置重定向虛擬主機是指僅僅提供重定向功能,而不實際存放用戶主頁數據的虛擬主機。比如,某站點有多個鏡像服務器,假設為www1.user.com、www2.user.com,…wwwn.user.com。這些服務器放在不同的網絡上,分布于各地的客戶訪問這些服務器的速度也互不相同。而站點www.home.com通過虛擬域名user.home.com為這些鏡像的服務器提供虛擬主機服務。當客戶訪問http://user.home.com時,www.home.com根據用戶的IP地址、收集到的網絡拓撲結構信息,把客戶重定向到對該客戶來說訪問速度最快的站點。重定向虛擬主機服務也可以通過使用URL重寫功能來完成。這里僅給出簡單的重寫規則:------------------------------------------------------------------------------------RewriteRule^([a-z0-9]+)\.home\.com([\.]*)/(.*)/www/cgi-bin/nph-redirect.cgi/$1/$3[T=application/x-httpd-cgi,L]------------------------------------------------------------------------------------其中,nph-redirect.cgi為一個CGI程序,為了實現自動重定向,它需要產生完整的HTTP應答頭信息。該程序通過環境變量PATH_INFO得到用戶請求的URL,通過環境變量REMOTE_ADDR得到用戶的IP地址,并根據網絡拓撲情況生成重定向信息,返回給客戶。


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線