apache2.2 虛擬機器主機配置

來源:互聯網
上載者:User

標籤:http   os   使用   ar   strong   檔案   sp   資料   div   

一、改動httpd.conf

開啟appserv的安裝資料夾,找到httpd.conf檔案,分別去掉以下兩行文字前面的#號。 

#LoadModule vhost_alias_module modules/mod_vhost_alias.so
去掉#意思是啟用apache的虛擬機器主機功能。 

#Include conf/extra/httpd-vhosts.conf
去掉這一行的#意思是從conf/extra/httpd-vhosts.conf這個檔案匯入虛擬機器主機配置

二、改動httpd-vhosts.conf

開啟該檔案,看到下面類似內容。虛擬機器主機的配置也是參照下面內容配置。下面對該內容進行解說

NameVirtualHost *:80<VirtualHost *:80>    ServerAdmin [email protected]    DocumentRoot "C:/Program Files/Apache2/docs/dummy-host.www.phpStudy.net"    ServerName dummy-host.www.phpStudy.net    ServerAlias www.dummy-host.www.phpStudy.net    ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"    CustomLog "logs/dummy-host.www.phpStudy.net-access.log" common</VirtualHost>
NameVirtualHost *:80

注意1:NameVirtualHost 指定虛擬機器主機所使用的IP地址或網域名稱,可是最好是IP地址。使用基於網域名稱的虛擬機器主機時,NameVirtualHost是必要的指令。NameVirtualHost能夠定義多個。 
注意2:全部符合NameVirtualHost或<VirtualHost>標籤定義的請求,都會被作為虛擬機器主機處理,而主server將不理會。NameVirtualHost定義了而<VirtualHost>標籤未定義的的請求,server會找不到對應的虛擬機器主機而將無法處理。所以每一個NameVirtualHost定義的參數至少要有一個<VirtualHost>相匹配。
注意3:假設設定NameVirtualHost 或<VirtualHost>為*:80的話,全部針對80port的請求,都會被虛擬機器主機處理,請求會依據網域名稱指向某個虛擬機器主機。假設有來自80port的請求,而所請求的網域名稱沒有被配置為虛擬機器主機,那將指向第一個虛擬機器主機。這樣主server將無法收到來自80port的不論什麼請求。為此也要為主server配置一個虛擬機器主機。

ServerAdmin 管理員郵箱

DocumentRoot 網站資料夾 (注意:假設網站資料夾中的路徑有空格,請在路徑兩端加上雙引號)

ServerName 要綁定的網域名稱(必填)

ServerAlias 要綁定的虛擬機器主機的別名。(可選,假設多個網域名稱,中間以空格分隔,假設沒有,則去掉該行)

支援*,?兩種萬用字元,比方 *.abc.com,表示隨意一個abc.com的次層網域都可訪問。

CustomLog 使用者記錄檔(可選,假設不須要,則去掉該行)

ErrorLog 錯誤記錄檔(可選,假設不須要,則去掉該行)


基於IP地址的虛擬機器主機

<VirtualHost 172.20.30.40>  DocumentRoot /www/example1  ServerName www.example.com</VirtualHost>
<VirtualHost 172.20.30.50 192.168.0.10:80>  DocumentRoot /www/example2  ServerName www.example.org</VirtualHost>
每一個虛擬機器主機可定義多個IP,之間用空格隔開

各種虛擬機器主機的混用

Listen 80Listen 81NameVirtualHost 172.20.30.40<VirtualHost 172.20.30.40>    DocumentRoot /www/example1    ServerName www.example.com</VirtualHost><VirtualHost 172.20.30.40>    DocumentRoot /www/example2    ServerName www.example.org</VirtualHost>NameVirtualHost 172.20.30.40:81<VirtualHost 172.20.30.40:81>    DocumentRoot /www/example3    ServerName www.example3.net</VirtualHost># IP-based<VirtualHost 172.20.30.50>    DocumentRoot /www/example4    ServerName www.example4.edu</VirtualHost><VirtualHost 172.20.30.60:81 172.20.30.40:81>    DocumentRoot /www/example5    ServerName www.example5.gov</VirtualHost>

虛擬機器主機混用時的問題

一、虛擬機器主機混用能夠這樣理解:一行NameVirtualHost指令定義的全部虛擬機器主機為一組;該組與一個基於IP的虛擬機器主機平級。即把一行NameVirtualHost定義的整個組看作是一個基於IP的虛擬機器主機。
二、虛擬機器主機指定的port必須是Listen定義的。假設虛擬機器主機沒有指定port,則覺得是80port。假設NameVirtualHost * 這樣定義,是指全部地址的全部已定義port。
三、更詳細的地址定義優先。比方NameVirtualHost指令定義了*:80,而某個基於IP的虛擬機器主機定義為192.168.0.1:80,那麼此時如有對192.168.0.1:80的請求,那請求會被優先指向192.168.0.1:80定義的虛擬機器主機。所以為了避免混亂,不要定義相互有交叉或包括的地址區間。
四、一個虛擬機器主機,能夠同一時候為基於網域名稱和基於IP的。如上一例中最後一個虛擬機器主機。這樣符合兩種定義的請求都會被指同一個虛擬機器主機。有時要差別內外網對虛擬機器主機的訪問時能夠這樣,由於來自內網的請求可能和來自外網的請求可能不一樣,可是它們須要指向同一個虛擬機器主機。

使用"_default_"虛擬機器主機

這個虛擬機器主機能夠理解成基於IP的虛擬機器主機

<VirtualHost _default_:*>    DocumentRoot /www/default</VirtualHost>
這個虛擬機器主機將接管與其他虛擬機器主機IP和port不匹配的請求。只是如此一來,主server將不會處理不論什麼請求。因此把主server配置成一個虛擬機器主機是必要的。

本地機器代理在其他機器上執行的虛擬機器主機

<VirtualHost 158.29.33.248>    ProxyPreserveHost On    ProxyPass /foo/no !    ProxyPass /foo http://192.168.111.2    ProxyPassReverse /foo http://192.168.111.2    ServerName hostname.example.com</VirtualHost>
一、首先這是一個基於IP的虛擬機器主機,它接收並處理對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在其他機器上被重新導向後,本機處理時也能夠保持一致。詳細看手冊關於反向 Proxy的部分。
六、基於網域名稱的虛擬機器主機也是相同的道理。無論是什麼類型的虛擬機器主機,它僅僅是處理歸它處理的請求而已。

配置執行個體

需求1:

這是一個基於IP的虛擬機器主機使用執行個體

一個項目資料應用,為了防止因為網域名稱解析問題導致不能正常訪問,因此採用IP的方式訪問介面。比方:http://61.122.3.6:8080/ 這種方式。虛擬機器主機的配置例如以下:

1、在httpd.conf中Listen 80以下添加?一行,內容為:Listen 8080,即監聽8080port

2、配置虛擬機器主機配置

#NameVirtualHost 61.122.3.6:8080 這一行能夠不須要。經測試,基於IP地址的虛擬機器主機可不用設定NameVirtualHost項。<VirtualHost 61.122.3.6:8080>    ServerAdmin [email protected]    DocumentRoot "d:/web/openj"</VirtualHost>


apache2.2 虛擬機器主機配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.