首頁  >  文章  >  後端開發  >  apache2.2 虛擬主機配置

apache2.2 虛擬主機配置

WBOY
WBOY原創
2016-08-08 09:24:281247瀏覽

一、修改httpd.conf

開啟appserv的安裝目錄,找到httpd.conf文件,分別去掉下面兩行文字前面的#號。 

[plain] view plaincopy

  1. #LoadModule vhost_alias_module modules/mod_vhost_alias.so  
 

[plain] view plaincopy

  1. #Include conf/extra/httpd-vhosts.conf  
去掉這一行的#意思是從文件/c/2/222去掉、修改httpd-vhosts.conf開啟該文件,看到以下類似內容。虛擬主機的配置也是參考以下內容配置。以下將內容說明

[plain] view plaincopy

NameVirtualHost *:80  
  1.    ServerAdmin webmaster@dummy-host.www.phpStudy.net  
  2.     DocumentRoot "C:/ Program Files/Apache2/docs/dummy-host.www.phpStudy.net"  
  3.     ServerName dummy-host.www.phpStudy. .net  
  4.     ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"  
  5.     CustomLog "logs/dummy-hostnet.dummy-hostnet.com
  6. NameVirtualHost *:80注意1:NameVirtualHost 指定虛擬主機所使用的IP位址或域名,但是最好是IP位址。使用基於網域的虛擬主機時,NameVirtualHost是必要的指令。 NameVirtualHost可以定義多個。 
  7. 注意2:所有符合NameVirtualHost或標籤定義的請求,都會被當作虛擬主機處理,而主伺服器將不理會。 NameVirtualHost定義了而標籤沒有定義的的請求,伺服器會找不到對應的虛擬主機而無法處理。所以每個NameVirtualHost定義的參數至少要有一個相符。
  8. 注意3:如果設定NameVirtualHost 或為*:80的話,所有針對80埠的請求,都會被虛擬主機處理,請求會根據網域指向某個虛擬主機。如果有來自80埠的請求,而所要求的網域名稱沒有被配置為虛擬主機,那將指向第一個虛擬主機。這樣主伺服器將無法收到來自80埠的任何請求。為此也要為主伺服器配置一個虛擬主機。 ServerAdmin 管理員信箱
  9. DocumentRoot 網站目錄(注意:如果網站目錄中的路徑有空格,請在路徑兩端加上雙引號)ServerName 要綁定的網域名稱(必填)
  10. ServerAlias 要綁定定的虛擬主機的別名。 (可選,如果多個域名,中間以空格分隔,如果沒有,則去掉該行)支援*,?兩種通配符,例如*.abc.com,表示任意一個abc.com的二級域名都可訪問。
CustomLog 使用者日誌檔案(可選,如果不需要,則去掉該行)ErrorLog 錯誤日誌(可選,如果不需要,則去掉該行)



基於IP位址的虛擬主機

[plain] view plaincopy

  



  DocumentRoot /www/ .com  

  

  1. [plain] view plaincopy
    1.   
    2. verName www.example.org  
    3.   
    4. 每個虛擬主機可定義多個IP,之間以空格隔開各種虛擬主機的混用
    [plain] view plaincopy

    Listen 80  

    1. Listen 81  .030505030315030303030303032030320503203030303032030520305220503032503032503030325030325030325032503032503250325030325032539030325539032390330333939393333933333  
    2.   
    3.   
    4.  
    5.     ServerName www.example.com  
    6.   
    7. irt
    8.   
    9. irt
    10. 40>  
    11.     DocumentRoot /www/example2  
    12.     ServerName wwwexample. org  
    13.   
    14.   
    15. NameVirtualHost  
    16. NameVirtualHost 172.20
    17. NameVirtualHost 172.20.30.40:80.30.
    18.   
    19.     DocumentRoot /www/example3     ServerName www.example3.net  
    20.   
    21.   
    22.     DocumentRoot /www/example4  
    23.     ServerName www.example4.edu  
    24.   
    25.   20.30.40:81>  
    26.     DocumentRoot /www/example5  
    27. www.example5.gov  
    28.   
    29. 虛擬主機混用時的問題
    30. 一、虛擬主機指令可以這樣理解:所有主機NameVual指令為所有一組主機指令的定義。一個基於IP的虛擬主機平級。也就是把一行NameVirtualHost定義的整個群組看成是一個基於IP的虛擬主機。 二、虛擬主機指定的連接埠必須是Listen定義的。如果虛擬主機沒有指定端口,則認為是80端口。如果NameVirtualHost * 這樣定義,是指所有位址的所有已定義連接埠。
    31. 三、更具體的地址定義優先。例如NameVirtualHost指令定義了*:80,而某個基於IP的虛擬主機定義為192.168.0.1:80,那麼此時如有對192.168.0.1:80的請求,那請求會被優先指向192.168.0.1:80定義的虛擬主機。所以為了避免混亂,不要定義相互有交叉或包含的地址區間。
    32. 四、一個虛擬主機,可以同時為基於網域名稱和基於IP的。如上一例中最後一個虛擬主機。這樣符合兩種定義的請求都會被指涉同一個虛擬主機。有時要區別內外網對虛擬主機的存取時可以這樣,因為來自內網的請求可能和來自外網的請求可能不一樣,但是它們需要指向同一個虛擬主機。 使用"_default_"虛擬主機
    33. 這個虛擬主機可以理解成基於IP的虛擬主機
    34. [plain] view plaincopy
    35.   

        DocumentRoot/www/




    這個虛擬主機將接管與其它虛擬主機IP和連接埠不符的請求。不過如此一來,主伺服器將不會處理任何請求。因此把主伺服器配置成一個虛擬主機是必要的。

    本地機器代理在其它機器上運行的虛擬主機

    [plain] view plaincopy

    1.   
    2.    
    3.    
    4.    /foo/no !  
    5.     ProxyPass /foo http://192.168.111.2  
    6. ) http://192.168.111.2  
    7.     ServerName hostname.example.com  
      
    處理對IP位址158.29 .33.248的請求。
    二、ProxyPass /foo http://192.168.111.2 將把對http://158.29.33.248/foo的請求轉換為一個代理請求,該請求指向http://192.168.111.2。
    三、ProxyPass /foo/no ! 不代理針對/foo/no的請求。這個必須放在正常代理指令之前。
    四、ProxyPreserveHost On 意思是傳送原始請求的Host訊息給被代理的機器。
    五、ProxyPassReverse /foo http://192.168.111.2 可以保證請求URL在其它機器上被重定向後,本機處理時也可以保持一致。具體看手冊關於反向代理的部分。

    六、基於網域的虛擬主機也是同樣的道理。不管是什麼類型的虛擬主機,它只是處理歸它處理的請求而已。

    配置實例

    需求1:

    這是一個基於IP的虛擬主機使用實例

    一個項目資料應用,為了防止由於網域解析問題導致不能正常訪問,因此採用IP的方式存取介面。例如:http://61.122.3.6:8080/ 這樣的方式。虛擬主機的設定如下:

    1、在httpd.conf中Listen 80下面增加一行,內容為:Listen 8080,即監聽8080埠

    2、設定虛擬主機設定

    1. 2、設定虛擬主機設定] plaincopy
    2. #NameVirtualHost 61.122.3.6:8080 這一行可以不需要。經測試,基於IP位址的虛擬主機可不用設定NameVirtualHost項目。
    3.   
    4.     ServerAdmin DocumentRoot "d:/web/openj"  

    🎜 以上就介紹了apache2.2 虛擬主機配置,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。 🎜 🎜 🎜
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn