成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

apache虛擬主機(jī)指南

:同一ip 不同端口對應(yīng)不同的站點(diǎn)目錄具體實(shí)現(xiàn):1. 在httpd.conf 中,設(shè)置listen IP:80 listen IP:8080然后在virtualhost 中設(shè)置:DocumnetRo

:同一ip 不同端口對應(yīng)不同的站點(diǎn)目錄

具體實(shí)現(xiàn):

1. 在httpd.conf 中,設(shè)置listen IP:80 listen IP:8080

然后在virtualhost 中設(shè)置:

DocumnetRoot 1

DocumnetRoot 2

我們通常所說的虛擬主機(jī)

[url=javascript:;]技術(shù)[/url]

就是將一臺(或者一組)服務(wù)器的資源(系統(tǒng)資源、網(wǎng)絡(luò)帶寬、存儲空間等)按照一定的比例分割成若干臺相對獨(dú)立的“小主機(jī)”的技術(shù)。每一臺這樣的“小主機(jī)”在功能上都可以實(shí)現(xiàn) WWW 、FTP 、Mail 等基本的Internet 服務(wù),就像使用獨(dú)立的主機(jī)一樣。

目前網(wǎng)站服務(wù)器的虛擬主機(jī)平臺使用以開放的Apache 為最多,其次是微軟的Windows IIS 。Apache 具有跨平臺(FreeBSD/Linux/Windows/Solaris/Other UNIX)、易于維護(hù)與最佳安全性等優(yōu)點(diǎn)。

Apache 是率先支持基于IP 虛擬主機(jī)的服務(wù)器之一。 Apache 1.1及其更新版本同時支持基于IP 和基于主機(jī)名的虛擬主機(jī),不同的虛擬主機(jī)有時會被稱為基于主機(jī)(host-based) 或非IP 虛擬主機(jī)(non-IP virtual hosts)。

用Apache 設(shè)置虛擬主機(jī)服務(wù)通??梢圆捎脙煞N方案:基于IP 地址的虛擬主機(jī)和基于主機(jī)名字的虛擬主機(jī),下面我們分別介紹一下它們的實(shí)現(xiàn)方法以及優(yōu)缺點(diǎn)。以便大家在具體的應(yīng)用中能夠選擇最合適的實(shí)現(xiàn)方法。

一、Apache 實(shí)現(xiàn)基于IP 地址的虛擬主機(jī)(每個站點(diǎn)擁有一個獨(dú)立IP 地址)

使用這種虛擬主機(jī)方式,首先要在服務(wù)器上為每個虛擬主機(jī)單獨(dú)設(shè)置一個IP 地址。這些IP 地址可以通過增加多個網(wǎng)卡或者在一個網(wǎng)卡上設(shè)立多個IP 地址來完成。有了多個IP 地址后,可以采用以下兩種方式之一來設(shè)置Apache 。

1、為每個虛擬主機(jī)運(yùn)行一份Apache

采用這種方式,每一份Apache 程序可以以單獨(dú)的用戶運(yùn)行,因此各個虛擬主機(jī)之間互不影響。設(shè)置這種虛擬主機(jī)時,只要為每一份Apache 設(shè)置一套配置文件就可以了,唯一需要注意的是:必須使用“Listen ”語句,強(qiáng)制每一份Apache 僅僅在屬于“自己”的IP 地址上接收服務(wù)請求。

優(yōu)點(diǎn):各個虛擬主機(jī)之間互不干擾,安全性高。

缺點(diǎn):占用系統(tǒng)資源較多。

2、多個虛擬主機(jī)共享同一份Apache

采用這種方式,各個虛擬主機(jī)共享同一份Apache ,因此各個虛擬主機(jī)之間有一定的影響,尤其是執(zhí)行CGI 程序時,可能會帶來一些嚴(yán)重的安全問題。設(shè)置這種虛擬主機(jī)時,只要為每一個虛擬主機(jī)設(shè)置類似如下的信息即可:

DocumentRoot /www/ghq1

優(yōu)點(diǎn):占用系統(tǒng)資源比上一種方式少。

缺點(diǎn):安全性低,每個虛擬主機(jī)仍然需要占用一個IP 地址。

,

例如服務(wù)器一個網(wǎng)卡上綁定有兩個IP 地址(172.16.3.40和 172.16.3.50)分別對應(yīng)域名 www.ghq1.com 和www.ghq2.org 的服務(wù),配置如下:

服務(wù)器配置(apache 的配置文件httpd.conf )

Listen 80

DocumentRoot /www/ghq1

ServerName www.ghq1.com

DocumentRoot /www/ghq2

ServerName www.ghq2.org

配置簡單說明:“Listen ”默認(rèn)httpd 服務(wù)會監(jiān)控第80號通信端口, “Listen ”選項讓用戶自行指定apache 服務(wù)器監(jiān)控的IP 地址或通信端口。

“DocumentRoot ”:指定apache 服務(wù)器存放網(wǎng)頁的根目錄;“ServerName ”:允許用戶自行設(shè)置主機(jī)名,這個名稱將被送到遠(yuǎn)程連接程序,以取代安裝apache 服務(wù)器主機(jī)的真實(shí)名稱。和構(gòu)成虛擬主機(jī)的語法結(jié)構(gòu),其中的IP 就是我們在服務(wù)器上綁定的不同的IP 地址,也可以是IP 地址加上通信端口號(見下面的例子)。

如果服務(wù)器有兩個IP 地址(172.16.3.40和 172.16.3.50)分別對應(yīng)域名 www.ghq1.com 和www.ghq2.org 。對每個域名,我們都希望在80端口和8080端口發(fā)布我們的網(wǎng)站??梢赃@樣配置:

服務(wù)器配置(apache 的配置文件httpd.conf )

Listen 172.16.3.40:80

Listen 172.16.3.40:8080

Listen 172.16.3.50:80

Listen 172.16.3.50:8080

DocumentRoot /www/ghq1-80

ServerName www.ghq1.com

DocumentRoot /www/ghq1-8080

ServerName www.ghq1.com

DocumentRoot /www/ghq2-80

ServerName www.ghq1.org

DocumentRoot /www/ghq2-8080

ServerName www.ghq2.org

因此,建立虛擬主機(jī),我們要做好不同的IP 對應(yīng)的域名解析

,

[url=javascript:;]工作[/url]

,建立相應(yīng)的目錄(如/www/ghq1),將相應(yīng)的主頁內(nèi)容存放在相應(yīng)的目錄中即可。

二、Apache 實(shí)現(xiàn)基于主機(jī)名的虛擬主機(jī)服務(wù)(一個IP 地址實(shí)現(xiàn)多個網(wǎng)站)

基于主機(jī)名字的虛擬主機(jī)服務(wù),是目前虛擬主機(jī)比較常用的一種方案。因為它不需要更多的IP 地址,無須什么特殊的軟硬件支持。而且現(xiàn)在的瀏覽器大都支持這種虛擬主機(jī)的實(shí)現(xiàn)方法?;谟蛎牡奶摂M主機(jī)是根據(jù)客戶端提交的HTTP 頭中的關(guān)于主機(jī)名的部分決定的。使用這種技術(shù),很多虛擬主機(jī)可以享用同一個IP 地址。

基于域名的虛擬主機(jī)相對比較簡單,因為我們只需要配置DNS 服務(wù)器將每個主機(jī)名映射(CNAMES )到正確的IP 地址,然后配置Apache HTTP服務(wù)器,令其辨識不同的主機(jī)名就可以了。基于域名的服務(wù)器也可以緩解IP 地址(IPV4)不足的問題。這種方式下,各個虛擬主機(jī)共享同一份Apache ,因此有CGI 程序運(yùn)行時,安全性也不高。

優(yōu)點(diǎn):只要一個IP 地址就可以提供大量的虛擬主機(jī)服務(wù)。

缺點(diǎn):安全性差。維護(hù)這些虛擬主機(jī)時需要更改配置文件,并且需要重新啟動Apache 進(jìn)程才能起作用。因此不適合進(jìn)行大規(guī)模的虛擬主機(jī)服務(wù)。

如果服務(wù)器只有一個IP 地址,而在DNS 中有很多映射到這個機(jī)器。我們想要在這個機(jī)器上運(yùn)行www.ghq1.com 和 www.ghq2.org 兩個站點(diǎn)。在Apache 服務(wù)器的配置中創(chuàng)建一個虛擬主機(jī)并不會自動在DNS 中對主機(jī)名做相應(yīng)更新。我們必須自己在DNS 中添加域名來指向我們的IP 地址。否則別人是無法看到我們的web 站點(diǎn)。

服務(wù)器配置(apache 的配置文件httpd.conf )

# Ensure that Apache listens on port 80

Listen 80

# Listen for virtual host requests on all IP addresses

NameVirtualHost *

DocumentRoot /www/ghq1

ServerName www.ghq1.com

# Other directives here

DocumentRoot /www/ghq2

ServerName www.ghq2.org

# Other directives here

因為*(星號)匹配所有的地址,所以主服務(wù)器不接收任何請求。因為 www.ghq1.com 首先出現(xiàn)在配置文件中,所以它擁有最高優(yōu)先級,可以認(rèn)為是默認(rèn)或首要服務(wù)器。這意味著如果一個接受的請求不能與某個ServerName 指令相匹配, 它將會由第一個VirtualHost 所伺服。

當(dāng)我們的IP 地址無法確定的時候,使用*是很方便的--比如說, ISP 給我們配置的是動態(tài)IP 地址(如ADSL 撥號上網(wǎng)),而我們有使用了某種動態(tài)域名解析系統(tǒng)時。因為*匹配任何IP 地址,所以在這樣的情況下,不論IP 地址如何變化,我們都不需要另外進(jìn)行配置。上述配置就是我們在絕大多數(shù)情況下使用基于域名的虛擬主機(jī)時將要用到的。

關(guān)于DNS 和Apache

本文檔的涵義一言以蔽之就是:不要讓Apache 在解析配置文件的時候用到DNS 。 如果

,

Apache 在解析配置文件時用到了DNS ,您的服務(wù)器就會發(fā)生可靠性的問題(也可能根本無法啟動) , 或者遭致拒絕(偷竊) 服務(wù)攻擊(包括用戶可以從其他用戶那里偷竊點(diǎn)擊) 。 一個簡單示例

拒絕服務(wù)

"main server"地址

避免這些問題的小技巧

附錄:進(jìn)一步的提示

一個簡單示例

ServerAdmin webgirl@abc.dom

DocumentRoot /www/abc

為了讓Apache 功能正常,一個虛擬主機(jī)絕對需要以下兩部分的信息: ServerName 和與服務(wù)器對應(yīng)的至少一個IP 地址。 這個示例沒有包括IP 地址,于是Apache 必須用DNS 來查詢www.abc.dom 的地址。 如果在某些不可預(yù)料的情況下,當(dāng)您的服務(wù)器解析配置文件時沒有得到DNS 的支持, 那么這個虛擬主機(jī) 將不會被配置。 它將不會對任何請求作出反應(yīng)。(在Apache 的1.2版本之前,服務(wù)器甚至無法啟動) 。

假設(shè)www.abc.dom 的IP 地址是10.0.0.1。那么看看以下這個配置片斷:

ServerAdmin webgirl@abc.dom

DocumentRoot /www/abc

現(xiàn)在Apache 需要DNS 對這個虛擬主機(jī)進(jìn)行反向域名解析來確定ServerName 。 如果反向解析失敗,那么這將導(dǎo)致這個虛擬主機(jī)部分功能喪失。 (在Apache 的1.2版本之前,服務(wù)器將不能啟動) 。如果虛擬主機(jī)是基于域名的, 它將完全不能使用,但如果它是基于IP 的,那么它將很有可能工作。 然而,如果Apache 不得不為一個已經(jīng)包含了服務(wù)器域名的服務(wù)器產(chǎn)生一個完整的URL , 那么它將可能產(chǎn)生一個無效的URL 。

以下是一個可以避免上述兩個問題的配置片斷.

ServerName www.abc.dom

ServerAdmin webgirl@abc.dom

DocumentRoot /www/abc

拒絕服務(wù)

拒絕服務(wù)主要由(至少) 兩種形式導(dǎo)致。 如果您在運(yùn)行Apache 1.2以前的版本,在上述兩種情況下,如果您的任何一個虛擬主機(jī)的DNS 解析失敗,您都會無法啟動服務(wù)。在一些情況下,DNS 解析甚至不在您的控制范圍之內(nèi)。 比如說,如果abc.dom 是您的一個客戶,而且他們自己控制著DNS 。 那么僅僅是因為他們刪除了www.abc.dom 這個記錄, 都會導(dǎo)致您的服務(wù)器(1.2之前的版本) 無法啟動。

另外一種形式就更隱蔽了。比如說下面這個配置片斷:

ServerAdmin webgirl@abc.dom

DocumentRoot /www/abc

,

ServerAdmin webguy@def.dom

DocumentRoot /www/def

假設(shè)您已經(jīng)為www.abc.dom 設(shè)定了10.0.0.1,而為www.def.dom 設(shè)定了10.0.0.2。 更進(jìn)一步,假設(shè)def.com 自己控制DNS 。在這種配置下, 您已經(jīng)把def.com 放到了一個可以將所有指向abc.com 的所有流量據(jù)為己有的情況之下。為了達(dá)到這樣的目的,他們只需要把www.def.dom 的地址解析設(shè)置成10.0.0.1就可以了。因為他們控制著自己的DNS 服務(wù), 所以您無法阻止他們把 www.def.com 這個記錄指向任何一個IP 地址。

然后,所有向10.0.0.1發(fā)出的請求 (包括用戶所有類似http: //www.abc.dom/任何字符的URL) 都將會為def.com 這個虛擬主機(jī)所接收。 為了更好的理解著一切是怎樣發(fā)生的, 您需要一個關(guān)于 Apache 是怎樣將進(jìn)入的請求分配給它的虛擬主機(jī)的深入說明。 您可以在這里發(fā)現(xiàn)一個完整的文檔。

"main server"地址

在Apache 1.1 中,基于域名的虛擬主機(jī)支持 需要Apache 知道運(yùn)行著httpd 的主機(jī)的IP 地址。 一般來說可以用全局變量ServerName(如果存在) 或者調(diào)用C 的方法gethostname(與在命令行模式下鍵入hostname 得到的返回值一樣) 。 接著它就會利用DNS 來查找這個地址。目前還沒有辦法避免這樣的查找。

如果您擔(dān)心這樣的查找會因為您的DNS 服務(wù)器沒有啟動而遭到失敗的結(jié)果, 您就可以在/etc/hosts中插入一條記錄來確定主機(jī)名 (此文件中應(yīng)該已經(jīng)存在這條記錄了,否則您的機(jī)器無法正常啟動) 。 然后,您要確認(rèn)您的機(jī)器已經(jīng)配置為當(dāng)DNS 解析失敗的情況下, 它將會使用/etc/hosts根據(jù)所使用的操作系統(tǒng)不同, 您可能需要在/etc/resolv.conf或/etc/nsswitch.conf 兩個文件中選擇一個進(jìn)行編輯。

如果您的服務(wù)器不必因為其他理由而使用DNS , 您也許不必在把HOSTRESORDER 環(huán)境變量設(shè)置為 "local" 的情況下運(yùn)行Apache 。 這都取決于您所使用的操作系統(tǒng)和解析庫。如果您沒有使用mod_env來控制環(huán)境變量,它還將影響到 CGI 。強(qiáng)烈建議您參考一下您所使用的操作系統(tǒng)附帶的man 幫助或FAQ 。

避免這些問題的小技巧

在VirtualHost 中使用IP 地址

在Listen 中使用IP 地址

確保所有的虛擬主機(jī)擁有顯式的ServerName 定義。

創(chuàng)建一個不包含任何服務(wù)頁面的服務(wù)器

附錄:進(jìn)一步的提示

涉及到DNS 的情況都很讓人不舒服。 在Apache 1.2 中,我們努力想讓服務(wù)器在DNS 解析失敗的情況下至少保持能夠啟動, 但可能我們還是沒能做到最好。在當(dāng)今重編號成了必須的Internet 上面, 在配置文件中顯式的寫明IP 地址已經(jīng)成為不合時宜的行為了。

上述盜竊攻擊的解決辦法是, 在一個正向的DNS 查詢結(jié)果后部署一個逆向DNS 解析并將兩個域名進(jìn)行比較。 如果不同,就禁用相應(yīng)的虛擬主機(jī)。 這個方法需要一個正確配置了的逆向域名解析服務(wù)器 (因為FTP 服務(wù)器和TCP 封裝進(jìn)行的“雙重逆向”DNS 處理的普遍應(yīng)用,這已為大部分管理員所熟知了) 。

在某些情況下,如果沒有使用IP 地址而DNS 解析又失敗了,那么正常啟動一個基于域名的虛擬主機(jī)看來是不可能的。 一些諸如禁用部分配置文件這樣的權(quán)宜之計會帶來比根本不能啟動更遭的不可預(yù)測的結(jié)果。

隨著HTTP/1.1的部署以及瀏覽器和代理服務(wù)器開始支持Host 頭,我們完全避免使用基于IP

,

的虛擬主機(jī)也逐漸成為可能。 這種狀況下,web 服務(wù)器也不必在配置時進(jìn)行DNS 的查詢。 但在1997年3月,這些特性的采用還沒有廣泛到可以在重要的web 服務(wù)器應(yīng)用的地步。 www.uplinux.com/download/doc/apache/ApacheManual/dns-caveats.html

www.uplinux.com/download/doc/apache/ApacheManual/mod/core.html

和用于封裝一組僅施用于特定虛擬主機(jī)的指令。任何在虛擬主機(jī)配置中可以使用的指令也同樣可以在這里使用。當(dāng)服務(wù)器接受了一個特定虛擬主機(jī)的文檔請求時,它會使用封裝在配置段中的指令。地址可以是

虛擬主機(jī)的IP 地址;

虛擬主機(jī)IP 地址對應(yīng)的完整域名;

字符*,僅與NameVirtualHost *配合使用以匹配所有的IP 地址;或是

字符串_default_,與基于IP 的虛擬主機(jī)聯(lián)用以捕獲所有沒有匹配的IP 地址。

示例

ServerAdmin webmaster@host.foo.com

DocumentRoot /www/docs/host.foo.com

ServerName host.foo.com

ErrorLog logs/host.foo.com-error_log

TransferLog logs/host.foo.com-access_log

IPv6的地址必須放入方括號中指定,否則作為可選項的端口號將無法確定。一個IPv6的示例如下:

ServerAdmin webmaster@host.foo.com

DocumentRoot /www/docs/host.foo.com

ServerName host.foo.com

ErrorLog logs/host.foo.com-error_log

TransferLog logs/host.foo.com-access_log

每個虛擬主機(jī)必須對應(yīng)不同的IP 地址、端口號或是不同的主機(jī)名。在第一種情況下,服務(wù)器所在物理機(jī)器必須配置為可以為多個地址接受IP 包。(在機(jī)器沒有多個網(wǎng)絡(luò)硬件界面的情況下,如果您的操作系統(tǒng)支持,您可以使用ifconfig alias命令來達(dá)到這個目的。)。

當(dāng)使用基于IP 的虛擬主機(jī)時,特殊的名稱_default_可以在沒有匹配上其它列出的虛擬主機(jī)的情況下作為匹配任何IP 地址的虛擬主機(jī)。在沒有進(jìn)行 _default_虛擬主機(jī)的設(shè)定時,在沒有IP 與請求匹配的情況下,將使用“主服務(wù)器”(包括所有在虛擬主機(jī)配置段之外的配置)的配置。(但請注意:任何匹配NameVirtualHost 指令的IP 地址既不會使用"main" 服務(wù)器配置,也不會使用_default_虛擬主機(jī)的配置。參閱基于域名的虛擬主機(jī)文檔獲得更多詳情。) 您可以指定一個:端口來改變匹配的端口。如果沒有指定,它將沿用主服務(wù)器中離它最近的那個Listen 語句指定的值。您也可以指定:*來匹配那個地址上的所有端口。(當(dāng)您使用_default_時,這是推薦采用的方法。)

安全提示:參閱安全提示文檔獲得為什么當(dāng)您存儲

[url=javascript:;]日志[/url]

文件的目錄對于啟動服務(wù)器以外的用戶來說是可寫的會危及服務(wù)器安全的詳細(xì)資料。

注意:的使用不會影響到Apache 偵聽的地址。您也許需要使用Listen 來確保Apache 偵聽著正確的地址。

本文有經(jīng)典論壇 劍氣凌人 收集整理

為調(diào)試程序,本機(jī)安裝iis 與apache ,無法同時使用80端口,現(xiàn)給出解決方法:

,

方法一:

IIS5,多IP 下共存,IIS 為192.168.0.1,apache 為192.168.0.2 原文地址

c:Inetpub?minscrīpts

cscrīpt adsutil.vbs set w3svc/disablesocketpooling true

該命令反饋如下disablesocketpooling : (BOOLEAN) True

重啟IIS

Inetpub?minscrīpts>cscrīpt adsutil.vbs set w3svc/disablesocketpooling true

由于 DisableSocketPooling 在 IIS 6.0 元

[url=javascript:;]數(shù)據(jù)庫[/url]

架構(gòu) (MBSchema.xml) 中被定義為有效屬性,所以,您仍然可以使用 Adsutil.vbs 設(shè)置該屬性,但這種設(shè)置不起作用。IIS 6.0 中的功能是新增的核心級別驅(qū)動程序 HTTP.sys 的一部分。要配置 HTTP.sys ,您必須使用 Httpcfg.exe

方法二:

IIS6,多IP 下共存,IIS 為192.168.0.1,apache 為192.168.0.2 原文地址

到2003的CD 下的 support/tools/Support.cab。解壓出httpcfg.exe 文件,COPY 到windows/system32/目錄下,用法自己看幫助

命令行

綁定到某IP : httpcfg set iplisten -i 192.168.0.1

即命令使用IIS 的只監(jiān)聽指定的IP 及端口

查看綁定: httpcfg query iplisten

刪除綁定: httpcfg delete iplisten -i 192.168.0.1

命令行

net stop Apache2

net stop iisadmin /y

net START Apache2

net START w3svc

保證iis 下的ip 設(shè)置為全局默認(rèn),Apache 中httpconf 設(shè)置listen 192.168.0.2:80,就應(yīng)該可以兩個服務(wù)同時運(yùn)行,相互不沖突了。

IIS 的訪問地址為http://192.168.0.1,Apache 訪問地址為http://192.168.0.2

方法三:

網(wǎng)上常用的單IP 共用80端口方法,不過不推薦,只是使用Apache 的代理,速度有影響將apache 設(shè)為使用80端口,IIS 使用其它端口,比如81,然后將apache 作為IIS 的代理。 在httpd.conf 里面,取消下面四行的注釋:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

然后建立一個虛擬主機(jī),將該域名的所有訪問轉(zhuǎn)向81端口。

ServerName iloves.vicp.net

ProxyPass /

localhost

ProxyPassReverse /

localhost

這樣,對外就可以只需要一個端口,即可同時使用apache 和IIS 的功能了

,

類推,使用第二種方法,你可以在IIS 上配置PHP4,Apache2中配置PHP5,只需要IIS 中安裝PHP4,把

[url=javascript:;]php[/url]

.ini 復(fù)制到windows目錄即可,這個就不用說了吧,Apache2中,只要把PHP5的php.ini 放在PHP5安裝目錄里面就行了

配置Apache 以支持PHP5:

LoadModule php5_module "D:/PHPServer/PHP5/php5apache2.dll"

AddType application/x-httpd-php .php

DirectoryIndex index.html index.php

PHPIniDir "D:/PHPServer/PHP5"

其中最重要的一條就是 PHPIniDir ,用來指明php.ini 文件所在位置,即PHP5的安裝目錄,注意所有目錄的應(yīng)該改為D: /PHPServer/PHP5這種格式,而非D:PHPServerPHP5,IIS 的訪問地址為http://192.168.0.1, Apache 訪問地址為http://192.168.0.2

標(biāo)簽: