最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 模塊
   致謝 | 譯者聲明 | 本篇譯者:金步國(guó) | 本篇譯稿最后更新:2006年1月20日 | 獲取最新版本

Apache核心(Core)特性

說(shuō)明Apache HTTP服務(wù)器核心提供的功能,始終有效
狀態(tài)核心(C)
top

AcceptFilter 指令

說(shuō)明根據(jù)協(xié)議類型對(duì)監(jiān)聽(tīng)Socket進(jìn)行優(yōu)化
語(yǔ)法AcceptFilter protocol accept_filter
作用域server config
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 2.1.5 以后的版本中可用

這個(gè)指令使得操作系統(tǒng)根據(jù)協(xié)議類型對(duì)監(jiān)聽(tīng)socket進(jìn)行特別的優(yōu)化。其基本前提是內(nèi)核在數(shù)據(jù)接受完畢或一個(gè)完整的HTTP請(qǐng)求緩沖完成前不向服務(wù)器進(jìn)程發(fā)送socket 。目前僅支持FreeBSD的接收過(guò)濾器(Accept Filter)和Linux的更原始的(more primitive)TCP_DEFER_ACCEPT 。

FreeBSD上的默認(rèn)值是:

AcceptFilter http httpready
AcceptFilter https dataready

httpready接收過(guò)濾器(Accept Filter)在內(nèi)核級(jí)別緩沖整個(gè)HTTP請(qǐng)求。一旦一個(gè)請(qǐng)求體被完整接收,內(nèi)核將把它發(fā)送給服務(wù)器。參見(jiàn)accf_http(9)手冊(cè)頁(yè)以獲得更詳細(xì)的信息。因?yàn)镠TTPS請(qǐng)求已經(jīng)被加密了,所以只使用了accf_data(9)過(guò)濾器。

Linux上的默認(rèn)值是:

AcceptFilter http data
AcceptFilter https data

Linux的TCP_DEFER_ACCEPT并不支持對(duì)http請(qǐng)求進(jìn)行緩沖。除none之外的任何值都將在監(jiān)聽(tīng)程序上啟用TCP_DEFER_ACCEPT 。參見(jiàn)tcp(7)手冊(cè)頁(yè)以獲得更多詳情。

使用none將會(huì)為那個(gè)協(xié)議禁用接收過(guò)濾器(accept filter)。這對(duì)于像nntp這樣需要服務(wù)器先發(fā)送數(shù)據(jù)的協(xié)議很有用處:

AcceptFilter nttp none

top

AcceptPathInfo 指令

說(shuō)明是否接受附帶多余路徑名信息的請(qǐng)求
語(yǔ)法AcceptPathInfo On|Off|Default
默認(rèn)值AcceptPathInfo Default
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 2.0.30 及以后的版本中可用

此指令決定是否接受在實(shí)際文件名(或?qū)嶋H目錄中一個(gè)不存在的文件)后跟隨多余路徑名信息的請(qǐng)求。這個(gè)多余的路徑名信息可以當(dāng)作PATH_INFO環(huán)境變量傳遞給腳本。

比如說(shuō),假設(shè)/test/所指向的目錄下只包括一個(gè)文件:here.html ,那么對(duì)/test/here.html/more/test/nothere.html/more的請(qǐng)求都會(huì)將PATH_INFO環(huán)境變量設(shè)為"/more"。

AcceptPathInfo指令的取值范圍:

Off
僅當(dāng)一個(gè)請(qǐng)求映射到一個(gè)真實(shí)存在的路徑時(shí),才會(huì)被接受。這樣,如上述/test/here.html/more這樣在真實(shí)文件名后跟隨一個(gè)路徑名的請(qǐng)求將會(huì)返回一個(gè)"404 NOT FOUND"錯(cuò)誤。
On
只要前導(dǎo)路徑可以映射到一個(gè)真實(shí)存在的文件,就可以接受該請(qǐng)求。這樣,只要上述/test/here.html能夠映射到一個(gè)有效的文件,那么對(duì)/test/here.html/more的請(qǐng)求就會(huì)被接收。
Default
是否接收附帶多余路徑名信息的請(qǐng)求由其對(duì)應(yīng)的處理器來(lái)決定。對(duì)應(yīng)普通文本的核心處理器默認(rèn)會(huì)拒絕PATH_INFO 。而用于伺服腳本的處理器,比如cgi-scriptisapi-isa,默認(rèn)會(huì)接受PATH_INFO

AcceptPathInfo指令存在的首要目的就是允許您覆蓋處理器關(guān)于是否接受PATH_INFO的默認(rèn)設(shè)置。這種覆蓋是很必要的。比如說(shuō),當(dāng)您使用了類似INCLUDES這樣的過(guò)濾器來(lái)根據(jù)PATH_INFO產(chǎn)生內(nèi)容時(shí)。核心處理器通常會(huì)拒絕這樣的請(qǐng)求,而您就可以用下述的配置使這樣的腳本成為可能:

<Files "mypaths.shtml">
Options +Includes
SetOutputFilter INCLUDES
AcceptPathInfo On
</Files>

top

AccessFileName 指令

說(shuō)明分布式配置文件的名字
語(yǔ)法AccessFileName filename
默認(rèn)值AccessFileName .htaccess
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

如果為某個(gè)目錄啟用了分布式配置文件功能,那么在向客戶端返回其中的文檔時(shí),服務(wù)器將在這個(gè)文檔所在的各級(jí)目錄中查找此配置文件。比如:

AccessFileName .acl

在返回文檔/usr/local/web/index.html之前,服務(wù)器會(huì)為此指令讀取 /.acl 、/usr/.acl/usr/local/.acl 、/usr/local/web/.acl 除非此功能以被如下配置所禁用:

<Directory />
AllowOverride None
</Directory>

參見(jiàn)

top

AddDefaultCharset 指令

說(shuō)明當(dāng)應(yīng)答內(nèi)容是text/plaintext/html時(shí),在HTTP應(yīng)答頭中加入的默認(rèn)字符集
語(yǔ)法AddDefaultCharset On|Off|charset
默認(rèn)值AddDefaultCharset Off
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core

當(dāng)且僅當(dāng)應(yīng)答內(nèi)容是text/plaintext/html時(shí),此指令將會(huì)在HTTP應(yīng)答頭中加入的默認(rèn)字符集。理論上這將覆蓋在文檔體中通過(guò)<meta>標(biāo)簽指定的字符集,但是實(shí)際的行為通常取決于用戶瀏覽器的設(shè)置。AddDefaultCharset Off 將會(huì)禁用此功能。AddDefaultCharset On 將啟用Apache內(nèi)部的默認(rèn)字符集iso-8859-1 。您也可以指定使用在IANA注冊(cè)過(guò)的字符集名字中的另外一個(gè)charset 。比如說(shuō):

AddDefaultCharset utf-8

AddDefaultCharset只應(yīng)當(dāng)在如下情況下使用:所有文本資源都使用同一種確定的字符集,且分別標(biāo)記他們的字符集非常麻煩。一個(gè)這樣的例子是向包含動(dòng)態(tài)內(nèi)容的資源中添加字符集參數(shù)(比如先前遺留的CGI腳本),這樣可能會(huì)因?yàn)樵谳敵鲋邪脩籼峁┑臄?shù)據(jù)而導(dǎo)致跨站點(diǎn)腳本攻擊。但是請(qǐng)注意:更好的解決辦法是修改或刪除這些腳本,因?yàn)樵O(shè)置了默認(rèn)的字符集以后將會(huì)使得瀏覽器的字符集自動(dòng)探測(cè)功能失效。

參見(jiàn)

top

AddOutputFilterByType 指令

說(shuō)明對(duì)特定的MIME類型指定輸出過(guò)濾器
語(yǔ)法AddOutputFilterByType filter[;filter...] MIME-type [MIME-type] ...
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性Apache 2.0.33 以后可用,但在Apache 2.1 以后反對(duì)使用

此指令根據(jù)應(yīng)答的MIME類型對(duì)請(qǐng)求激活特定的輸出過(guò)濾器。由于下面將要討論的問(wèn)題,我們反對(duì)使用這個(gè)指令。同樣的功能可以通過(guò)使用mod_filter模塊獲得。

下例使用了由mod_deflate提供的DEFLATE過(guò)濾器。它將把所有以text/htmltext/plain為標(biāo)記的輸出(不論靜態(tài)或動(dòng)態(tài))在發(fā)送到客戶端之前進(jìn)行壓縮。

AddOutputFilterByType DEFLATE text/html text/plain

如果您希望使用多個(gè)過(guò)濾器來(lái)處理內(nèi)容,您可以用分號(hào)(;)來(lái)分隔它們的名字。并對(duì)每個(gè)過(guò)濾器使用AddOutputFilterByType指令。

下述配置將使所有標(biāo)記為text/html的腳本輸出首先被INCLUDES過(guò)濾器處理后再被DEFLATE過(guò)濾器處理。

<Location /cgi-bin/>
Options Includes
AddOutputFilterByType INCLUDES;DEFLATE text/html
</Location>

注意

在某些情況下,用AddOutputFilterByType來(lái)使用過(guò)濾器會(huì)遭受部分或完全的失敗。比如,如果MIME類型不能確定,那么將不會(huì)有過(guò)濾器加于其上,從而使之回到DefaultType的設(shè)置。甚至當(dāng)DefaultType與其相同的時(shí)候也是這樣。

然而,如果您想確認(rèn)對(duì)某些資源相關(guān)的內(nèi)容類型確實(shí)使用了過(guò)濾器,您可以使用用諸如AddTypeForceType這樣的辦法。在一個(gè)(non-nph)CGI腳本中設(shè)定內(nèi)容類型也很安全。

由類型決定的輸出過(guò)濾器永遠(yuǎn)不會(huì)作用于來(lái)自代理的請(qǐng)求。

參見(jiàn)

top

AllowEncodedSlashes 指令

說(shuō)明確定是否允許URL中使用經(jīng)過(guò)編碼的路徑分割符
語(yǔ)法AllowEncodedSlashes On|Off
默認(rèn)值AllowEncodedSlashes Off
作用域server config, virtual host
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 2.0.46 及以后的版本中可用

AllowEncodedSlashes指令允許使用包含經(jīng)過(guò)編碼的路徑分割符的URL("%2F"→"/"或"%5C"→"\",取決于不同的系統(tǒng))。默認(rèn)情況下,這些URL將被一個(gè)包含"404"(未找到)錯(cuò)誤的應(yīng)答拒絕。

AllowEncodedSlashes On 通常和PATH_INFO配合使用。

注意

允許使用經(jīng)過(guò)編碼的斜線(路徑分割符)并不意味著解碼。%2F%5C(僅僅取決于不同的系統(tǒng))將會(huì)按原樣出現(xiàn)在解碼后的URL字符串中。

參見(jiàn)

top

AllowOverride 指令

說(shuō)明確定允許存在于.htaccess文件中的指令類型
語(yǔ)法AllowOverride All|None|directive-type [directive-type] ...
默認(rèn)值AllowOverride All
作用域directory
狀態(tài)核心(C)
模塊core

當(dāng)服務(wù)器發(fā)現(xiàn)一個(gè).htaccess文件(由AccessFileName指定)時(shí),它需要知道在這個(gè)文件中聲明的哪些指令能覆蓋在此之前指定的配置指令。

僅允許存在于<Directory>配置段

AllowOverride僅在不包含正則表達(dá)式的<Directory>配置段中才是有效的。在<Location>, <DirectoryMatch>, <Files>配置段中都是無(wú)效的。

如果此指令被設(shè)置為None ,那么.htaccess文件將被完全忽略。事實(shí)上,服務(wù)器根本不會(huì)讀取.htaccess文件。

當(dāng)此指令設(shè)置為 All時(shí),所有具有".htaccess"作用域的指令都允許出現(xiàn)在.htaccess文件中。

directive-type可以是下列各組指令之一:

AuthConfig
允許使用與認(rèn)證授權(quán)相關(guān)的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允許使用控制文檔類型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文檔元數(shù)據(jù)的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。
Indexes
允許使用控制目錄索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
Limit
允許使用控制主機(jī)訪問(wèn)的指令(Allow, Deny, Order)。
Options[=Option,...]
允許使用控制指定目錄功能的指令(OptionsXBitHack)?梢栽诘忍(hào)后面附加一個(gè)逗號(hào)分隔的(無(wú)空格的)Options選項(xiàng)列表,用來(lái)控制允許Options指令使用哪些選項(xiàng)。

例如以下指令只允許在.htaccess中使用AuthConfigIndexes組的指令:

AllowOverride AuthConfig Indexes

不在這兩組中的指令將會(huì)導(dǎo)致服務(wù)器產(chǎn)生一個(gè)內(nèi)部錯(cuò)誤。

參見(jiàn)

top

AuthName 指令

說(shuō)明用于HTTP認(rèn)證的授權(quán)域
語(yǔ)法AuthName auth-domain
作用域directory, .htaccess
覆蓋項(xiàng)AuthConfig
狀態(tài)核心(C)
模塊core

此指令為目錄的授權(quán)域設(shè)置名字。此域?qū)l(fā)送給客戶端以使用戶了解應(yīng)當(dāng)發(fā)送哪個(gè)用戶名和密碼。AuthName指令帶有一個(gè)參數(shù)。如果域的名字中包含空格,則必須用引號(hào)引起來(lái)。它必須與AuthTypeRequire指令以及諸如AuthUserFileAuthGroupFile這樣的指令一起工作。

例如:

AuthName "Top Secret"

提供給AuthName的字符串將出現(xiàn)在大多數(shù)瀏覽器提供的密碼對(duì)話框中。

參見(jiàn)

top

AuthType 指令

說(shuō)明用戶認(rèn)證類型
語(yǔ)法AuthType Basic|Digest
作用域directory, .htaccess
覆蓋項(xiàng)AuthConfig
狀態(tài)核心(C)
模塊core

此指令選擇了一個(gè)目錄的用戶認(rèn)證類型。目前只實(shí)現(xiàn)了Basic(mod_auth_basic)和Digest(mod_auth_digest)。

要實(shí)現(xiàn)認(rèn)證,還必須同時(shí)與AuthNameRequire指令一起使用。另外,服務(wù)器還必須包含一個(gè)認(rèn)證支持模塊(比如mod_authn_file)和一個(gè)授權(quán)支持模塊(比如mod_authz_user)。

參見(jiàn)

top

CGIMapExtension 指令

說(shuō)明定位CGI腳本解釋器
語(yǔ)法CGIMapExtension cgi-path .extension
作用域directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性NetWare only

此指令用于定位Apache CGI腳本解釋器。比如,"CGIMapExtension sys:\foo.nlm .foo"將把所有具有.foo后綴的CGI腳本文件傳遞給FOO解釋器。

top

ContentDigest 指令

說(shuō)明允許生成Content-MD5應(yīng)答頭
語(yǔ)法ContentDigest On|Off
默認(rèn)值ContentDigest Off
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)Options
狀態(tài)核心(C)
模塊core

此指令遵照RFC1854和RFC2068協(xié)議的定義啟用了Content-MD5應(yīng)答頭的生成。

MD5是一種為不定長(zhǎng)度的數(shù)據(jù)計(jì)算出一個(gè)"消息摘要"(有時(shí)也稱為"指紋")的算法。并且保證數(shù)據(jù)中的任何變化都會(huì)反應(yīng)在消息摘要的變化中。

Content-MD5頭提供了一種端到端的針對(duì)整個(gè)消息體的信息完整性檢查方法。代理或者客戶端會(huì)檢查此頭以偵測(cè)在傳輸過(guò)程中,消息體是否產(chǎn)生了意外的改變。一個(gè)頭的例子如下:

Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==

請(qǐng)注意,因?yàn)閷?duì)每個(gè)請(qǐng)求都要進(jìn)行消息摘要的運(yùn)算(沒(méi)有對(duì)其值進(jìn)行緩存),所以這會(huì)對(duì)您的服務(wù)器造成性能方面的影響。

Content-MD5僅為由Apache核心伺服的文檔進(jìn)行發(fā)送,而對(duì)于由模塊處理的文檔則不予理會(huì)。比如說(shuō)SSI文檔、CGI腳本的輸出、字節(jié)范圍的應(yīng)答都不包括這個(gè)頭。

top

DefaultType 指令

說(shuō)明在服務(wù)器無(wú)法由其他方法確定內(nèi)容類型時(shí),發(fā)送的默認(rèn)MIME內(nèi)容類型
語(yǔ)法DefaultType MIME-type
默認(rèn)值DefaultType text/plain
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core

有時(shí)會(huì)發(fā)生這樣的事:服務(wù)器會(huì)被要求提供一個(gè)文檔,而這個(gè)文檔的類型無(wú)法由它的MIME類型映射所決定。

服務(wù)器必須通知客戶端其文檔的內(nèi)容類型。所以當(dāng)一個(gè)未知類型出現(xiàn)時(shí),將會(huì)使用DefaultType 。例如:

DefaultType image/gif

這樣的配置對(duì)于里面有很多gif圖片而有些在文件名中缺少.gif擴(kuò)展名的目錄非常合適。

注意,與ForceType指令的不同之處在于:此指令僅提供了默認(rèn)的mime類型。所有其它mime類型的定義,包括文件的擴(kuò)展名,或其它可以標(biāo)識(shí)媒體類型的方法都會(huì)覆蓋此默認(rèn)值。

top

<Directory> 指令

說(shuō)明封裝一組指令,使之僅對(duì)文件空間中的某個(gè)目錄及其子目錄生效
語(yǔ)法<Directory directory-path> ... </Directory>
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

<Directory></Directory>用于封裝一組指令,使之僅對(duì)某個(gè)目錄及其子目錄生效。任何可以在"directory"作用域中使用的指令都可以使用。Directory-path可以是一個(gè)目錄的完整路徑,或是包含了Unix shell匹配語(yǔ)法的通配符字符串。在通配符字符串中,"?"匹配任何單個(gè)的字符,"*"匹配任何字符序列。您也可以使用"[]"來(lái)確定字符范圍。以上通配符都不能匹配"/"字符。所以<Directory /*/public_html>將無(wú)法匹配/home/user/public_html ,但<Directory /home/*/public_html>能夠正確匹配。比如說(shuō):

<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>

使用directory-path參數(shù)的時(shí)候要注意:它們必須與Apache用于訪問(wèn)文件的文件系統(tǒng)路徑保持一致。賦予特定<Directory>的指令將無(wú)法對(duì)通過(guò)不同路徑指向的同一個(gè)目錄文件生效,比如說(shuō)通過(guò)另外一個(gè)符號(hào)連接生成的路徑。

擴(kuò)展的正則表達(dá)式也可以通過(guò)附加一個(gè)"~"字符來(lái)使用。比如說(shuō):

<Directory ~ "^/www/(.+/)*[0-9]{3}">

將匹配/www/下所有由3個(gè)數(shù)字組成的目錄。

如果有多個(gè)(非正則表達(dá)式)<Directory>配置段符合包含某文檔的目錄(或其父目錄),那么指令將以短目錄優(yōu)先的規(guī)則進(jìn)行應(yīng)用。并包含.htaccess文件中的指令。比如說(shuō)在

<Directory />
AllowOverride None
</Directory>

<Directory /home/>
AllowOverride FileInfo
</Directory>

中,訪問(wèn)文檔/home/web/dir/doc.html的步驟如下:

正則表達(dá)式將在所有普通配置段之后予以考慮。所有的正則表達(dá)式將根據(jù)它們出現(xiàn)在配置文件中的順序進(jìn)行應(yīng)用。比如說(shuō),以下配置:

<Directory ~ abc$>
# ......
</Directory>

正則表達(dá)式配置段將在所有普通的<Directory>.htaccess文件應(yīng)用之后才予以考慮。所以正則表達(dá)式將匹配/home/abc/public_html/abc并予以應(yīng)用。

請(qǐng)注意:Apache對(duì)<Directory />的默認(rèn)訪問(wèn)權(quán)限為"Allow from All"。這意味著Apache將伺服任何通過(guò)URL映射的文件。我們建議您將這個(gè)配置做如下屏蔽:

<Directory />
Order Deny,Allow
Deny from All
</Directory>

然后在您想要使之被訪問(wèn)的目錄中覆蓋此配置。參閱安全提示以獲取更多詳情。

一般來(lái)說(shuō)<Directory>指令只會(huì)出現(xiàn)在httpd.conf文件中,但它們也可能出現(xiàn)在任何其它配置文件中。<Directory>指令不可被嵌套使用,也不能出現(xiàn)在<Limit><LimitExcept>配置段中。

參見(jiàn)

top

<DirectoryMatch> 指令

說(shuō)明封裝一些指令并作用于文件系統(tǒng)中匹配正則表達(dá)式的所有目錄及其子目錄
語(yǔ)法<DirectoryMatch regex> ... </DirectoryMatch>
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

<DirectoryMatch></DirectoryMatch>用于封裝一組指令。與<Directory>類似,此指令將僅作用于指定名字的目錄及其子目錄。然而,它可以接受一個(gè)正則表達(dá)式作為參數(shù)。比如說(shuō):

<DirectoryMatch "^/www/(.+/)*[0-9]{3}">

將匹配/www/下所有由3個(gè)數(shù)字組成的目錄。

參見(jiàn)

top

DocumentRoot 指令

說(shuō)明組成網(wǎng)絡(luò)上可見(jiàn)的主文檔樹(shù)的根目錄
語(yǔ)法DocumentRoot directory-path
默認(rèn)值DocumentRoot /usr/local/apache2/htdocs
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

此指令設(shè)置了httpd伺服的目錄。在沒(méi)有使用類似Alias這樣的指令的情況下,服務(wù)器會(huì)將請(qǐng)求中的URL附加到DocumentRoot后面以構(gòu)成指向文檔的路徑。比如說(shuō):

DocumentRoot /usr/web

于是對(duì)http://www.my.host.com/index.html的訪問(wèn)就會(huì)指向/usr/web/index.html 。如果directory-path不是絕對(duì)路徑,則被假定為是相對(duì)于ServerRoot的路徑。

指定DocumentRoot時(shí)不應(yīng)包括最后的"/"。

參見(jiàn)

top

EnableMMAP 指令

說(shuō)明在遞送中使用內(nèi)存映射(memory-mapping)來(lái)讀取文件
語(yǔ)法EnableMMAP On|Off
默認(rèn)值EnableMMAP On
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core

此指令指示httpd在遞送中如果需要讀取一個(gè)文件的內(nèi)容,它是否可以使用內(nèi)存映射。當(dāng)處理一個(gè)需要訪問(wèn)文件中的數(shù)據(jù)的請(qǐng)求時(shí),比如說(shuō)當(dāng)遞送一個(gè)使用mod_include進(jìn)行服務(wù)器端分析的文件時(shí),如果操作系統(tǒng)支持,Apache將默認(rèn)使用內(nèi)存映射。

這種內(nèi)存映射有時(shí)會(huì)帶來(lái)性能的提高,但在某些情況下,您可能會(huì)需要禁用內(nèi)存映射以避免一些操作系統(tǒng)的問(wèn)題:

在可能遇到這些問(wèn)題的服務(wù)器配置過(guò)程中,您應(yīng)當(dāng)使用下面的命令來(lái)禁用內(nèi)存映射:

EnableMMAP Off

對(duì)于掛載了NFS的文件夾,可以單獨(dú)指定禁用內(nèi)存映射:

<Directory "/path-to-nfs-files"> EnableMMAP Off </Directory>

top

EnableSendfile 指令

說(shuō)明使用操作系統(tǒng)內(nèi)核的sendfile支持來(lái)將文件發(fā)送到客戶端
語(yǔ)法EnableSendfile On|Off
默認(rèn)值EnableSendfile On
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 2.0.44 及以后的版本中可用

這個(gè)指令控制httpd是否可以使用操作系統(tǒng)內(nèi)核的sendfile支持來(lái)將文件發(fā)送到客戶端。默認(rèn)情況下,當(dāng)處理一個(gè)請(qǐng)求并不需要訪問(wèn)文件內(nèi)部的數(shù)據(jù)時(shí)(比如發(fā)送一個(gè)靜態(tài)的文件內(nèi)容),如果操作系統(tǒng)支持,Apache將使用sendfile將文件內(nèi)容直接發(fā)送到客戶端而并不讀取文件。

這個(gè)sendfile機(jī)制避免了分開(kāi)的讀和寫(xiě)操作以及緩沖區(qū)分配,但是在一些平臺(tái)或者一些文件系統(tǒng)上,最好禁止這個(gè)特性來(lái)避免一些問(wèn)題:

如果出現(xiàn)以上情況,你應(yīng)當(dāng)禁用sendfile :

EnableSendfile Off

針對(duì)NFS或SMB,這個(gè)指令可以被針對(duì)目錄的設(shè)置覆蓋:

<Directory "/path-to-nfs-files"> EnableSendfile Off </Directory>

top

ErrorDocument 指令

說(shuō)明當(dāng)遇到錯(cuò)誤的時(shí)候服務(wù)器將給客戶端什么樣的應(yīng)答
語(yǔ)法ErrorDocument error-code document
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性在Apache2.0中引用文字的語(yǔ)法發(fā)生了變化

當(dāng)遇到問(wèn)題或錯(cuò)誤的時(shí)候,Apache能被配置為進(jìn)行以下四種處理之一:

  1. 輸出一個(gè)簡(jiǎn)單生硬的錯(cuò)誤代碼信息
  2. 輸出一個(gè)經(jīng)過(guò)定制的信息
  3. 重定向到一個(gè)本地的URL-path來(lái)處理這個(gè)問(wèn)題(錯(cuò)誤)
  4. 重定向到一個(gè)外部的URL來(lái)處理這個(gè)問(wèn)題(錯(cuò)誤)

默認(rèn)會(huì)采取第1種方法,而第2-4種方法可以使用ErrorDocument指令后面跟隨一個(gè)HTTP應(yīng)答代碼和一個(gè)URL或信息來(lái)進(jìn)行配置。Apache有時(shí)會(huì)額外提供一些信息來(lái)描述所發(fā)生的問(wèn)題/錯(cuò)誤。

URL可以由一個(gè)斜杠(/)開(kāi)頭來(lái)指示一個(gè)本地URL(相對(duì)于DocumentRoot),或是提供一個(gè)能被客戶端解釋的完整的URL。此外還能提供一個(gè)可以被瀏覽器顯示的消息。比如:

ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 "Sorry can't allow you access today"

另外,特殊的"default"值可以被用來(lái)指定使用Apache內(nèi)置的、簡(jiǎn)單的硬編碼消息。當(dāng)不需要這個(gè)定制特性的時(shí)候,可以用"default"恢復(fù)Apache內(nèi)置的、簡(jiǎn)單的硬編碼消息,否則將繼承一個(gè)已有的ErrorDocument 。

ErrorDocument 404 /cgi-bin/bad_urls.pl

<Directory /web/docs>
ErrorDocument 404 default
</Directory>

請(qǐng)注意,如果您為ErrorDocument指定了一個(gè)外部的URL(比如說(shuō),任何在開(kāi)頭指示了類似"http"這樣的訪問(wèn)方法的字符串),Apache將會(huì)向客戶端發(fā)送一個(gè)重定向指令來(lái)告訴它在哪里找到這個(gè)文檔,哪怕這個(gè)文檔最后還是在這個(gè)服務(wù)器上。這里面包含著一些暗示:最重要的就是客戶端無(wú)法接收到原始的錯(cuò)誤狀態(tài)代碼,取而代之的是一個(gè)重定向狀態(tài)代碼。這將會(huì)使一些用狀態(tài)代碼來(lái)判斷一個(gè)URL是否有效的web機(jī)器人或其它客戶端產(chǎn)生誤解。另外,如果您在"ErrorDocument 401"中使用了外部URL,客戶端將不會(huì)提示用戶輸入密碼,因?yàn)樗緵](méi)收到這樣一個(gè)401的狀態(tài)代碼。所以,如果您想使用"ErrorDocument 401"指令,就必須指向一個(gè)本地的文檔

Microsoft Internet Explorer (MSIE)在服務(wù)器端產(chǎn)生的錯(cuò)誤信息"很小"的時(shí)候會(huì)忽略它們而用自己"友好的"錯(cuò)誤信息進(jìn)行取代。這個(gè)大小的閾值根據(jù)錯(cuò)誤類型而不同。但一般來(lái)說(shuō),如果您的錯(cuò)誤信息的大小在512 byte以上,MSIE就會(huì)顯示這些服務(wù)器端產(chǎn)生的錯(cuò)誤文檔而不會(huì)屏蔽它們。您可以在微軟知識(shí)庫(kù)的文章Q294807中獲取更多信息。

雖然大多數(shù)錯(cuò)誤信息可以被改寫(xiě),但是在有些情況下,將仍然使用某些內(nèi)置的錯(cuò)誤信息而不管ErrorDocument如何設(shè)置。特別是在檢測(cè)到一個(gè)"畸形"請(qǐng)求的情況下,正常的請(qǐng)求處理過(guò)程將會(huì)被立即中斷,并且立即返回一個(gè)內(nèi)置的錯(cuò)誤信息。這是為了防止某些不良請(qǐng)求可能導(dǎo)致的安全問(wèn)題。

在2.0版以前,信息前面會(huì)用一個(gè)不配對(duì)的雙引號(hào)作為前導(dǎo)標(biāo)志。

參見(jiàn)

top

ErrorLog 指令

說(shuō)明存放錯(cuò)誤日志的位置
語(yǔ)法 ErrorLog file-path|syslog[:facility]
默認(rèn)值ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows 和 OS/2)
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

ErrorLog指令指定了當(dāng)服務(wù)器遇到錯(cuò)誤時(shí)記錄錯(cuò)誤日志的文件。如果file-path不是一個(gè)以斜杠(/)開(kāi)頭的絕對(duì)路徑,那么將被認(rèn)為是一個(gè)相對(duì)于ServerRoot的相對(duì)路徑。

示例

ErrorLog /var/log/httpd/error_log

如果file-path以一個(gè)管道符號(hào)(|)開(kāi)頭,那么會(huì)為它指定一個(gè)命令來(lái)處理錯(cuò)誤日志。

示例

ErrorLog "|/usr/local/bin/httpd_errors"

如果系統(tǒng)支持,使用"syslog"替代文件名將通過(guò)syslogd(8)來(lái)記載日志。默認(rèn)將使用系統(tǒng)日志機(jī)制local7 ,但您可以用"syslog:facility"語(yǔ)法來(lái)覆蓋這個(gè)設(shè)置,其中,facility的取值為syslog(1)中記載的任何一個(gè)名字。

示例

ErrorLog syslog:user

安全提示:參閱安全提示文檔獲得關(guān)于為什么當(dāng)記錄日志文件的目錄對(duì)于啟動(dòng)服務(wù)器以外的用戶可寫(xiě)時(shí)會(huì)對(duì)您的服務(wù)器構(gòu)成安全威脅。

注意

當(dāng)在非Unix平臺(tái)上輸入文件路徑的時(shí)候,路徑分隔符必須統(tǒng)一使用正斜線(/),即使那個(gè)平臺(tái)本身使用反斜線(\)。

參見(jiàn)

top

FileETag 指令

說(shuō)明用以創(chuàng)建ETag應(yīng)答頭的文件的屬性
語(yǔ)法FileETag component ...
默認(rèn)值FileETag INode MTime Size
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core

FileETag指令配置了當(dāng)文檔是基于一個(gè)文件時(shí)用以創(chuàng)建ETag(實(shí)體標(biāo)簽)應(yīng)答頭的文件的屬性(ETag的值用于進(jìn)行緩沖管理以節(jié)約網(wǎng)絡(luò)帶寬)。在Apache1.3.22及以前,ETag的值總是由文件的inode(索引節(jié)點(diǎn))、大小、最后修改時(shí)間決定。FileETag指令可以讓您選擇(如果您想進(jìn)行選擇)這其中哪些要素將被使用。主要關(guān)鍵字如下:

INode
文件的索引節(jié)點(diǎn)(inode)數(shù)
MTime
文件的最后修改日期及時(shí)間
Size
文件的字節(jié)數(shù)
All
所有存在的域,等價(jià)于:

FileETag INode MTime Size

None
如果一個(gè)文檔是基于文件的,則不在應(yīng)答中包含任何ETag

可以在INode, MTime, Size前加上"+"或"-"以改變由上層繼承下來(lái)的默認(rèn)值。任何沒(méi)有上述前綴的關(guān)鍵字將立刻完全取消繼承下來(lái)的設(shè)置。

如果一個(gè)目錄的配置包含了"FileETag INode MTime Size"而其一個(gè)子目錄包含了"FileETag -INode"那么這個(gè)子目錄的設(shè)置(并會(huì)被其下任何沒(méi)有進(jìn)行覆蓋的子目錄繼承)將等價(jià)于"FileETag MTime Size"。

top

<Files> 指令

說(shuō)明包含作用于匹配指定文件名的指令
語(yǔ)法<Files filename> ... </Files>
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

<Files>指令提供了基于文件名的訪問(wèn)控制,類似于<Directory><Location>指令。它將配對(duì)一個(gè)</Files>指令。在此配置段中定義的指令將作用于其基本名稱(不是完整的路徑)與指定的文件名相符的對(duì)象。<Files>段將根據(jù)它們?cè)谂渲梦募谐霈F(xiàn)的順序被處理:在<Directory>段和.htaccess文件被處理之后,但在<Location>段之前。請(qǐng)注意:<Files>能嵌入到<Directory>段中以限制它們作用的文件系統(tǒng)范圍。

filename參數(shù)應(yīng)當(dāng)是一個(gè)文件名或是一個(gè)包含通配符的字符串,其中"?"匹配任何單個(gè)字符,"*"匹配任何字符串序列。在"~"字符之后同樣可以使用正則表達(dá)式。比如:

<Files ~ "\.(gif|jpe?g|png)$">

將匹配絕大部分常見(jiàn)的因特網(wǎng)圖象格式。然而在Apache1.3及其后繼版本中,更推薦使用<FilesMatch>指令。

請(qǐng)注意與<Directory><Location>配置段不同的是:<Files>配置段可用于.htaccess文件當(dāng)中。這將允許用戶在文件層面上控制對(duì)它們自己文件的訪問(wèn)。

參見(jiàn)

top

<FilesMatch> 指令

說(shuō)明包含作用于與正則表達(dá)式匹配的文件名的指令
語(yǔ)法<FilesMatch regex> ... </FilesMatch>
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

<FilesMatch>指令就像<Files>指令一樣提供了針對(duì)文件名的訪問(wèn)控制。然而,它使用的是正則表達(dá)式。比如說(shuō):

<FilesMatch "\.(gif|jpe?g|png)$">

將匹配最常見(jiàn)的internet圖形文件格式。

參見(jiàn)

top

ForceType 指令

說(shuō)明強(qiáng)制所有匹配的文件被作為指定的MIME類型進(jìn)行伺服
語(yǔ)法ForceType MIME-type|None
作用域directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性Apache 2.0之后從其它模塊移動(dòng)到核心中

當(dāng)此指令放入.htaccess文件或<Directory><Location><Files>配置段時(shí),此指令強(qiáng)制所有匹配的文件被當(dāng)作在MIME-type中指定的Content-Type來(lái)伺服。比如說(shuō),如果您有一個(gè)包含大量GIF文件的目錄,可您又不想全都為它們加上".gif"擴(kuò)展名的話,您可以這樣做:

ForceType image/gif

請(qǐng)注意:與DefaultType指令不同,此指令將覆蓋所有的mime類型關(guān)聯(lián),包括標(biāo)識(shí)文件類型的擴(kuò)展名。

你可以通過(guò)使用"None"覆蓋任何ForceType設(shè)置:

# 強(qiáng)制所有文件為 image/gif:
<Location /images>
ForceType image/gif
</Location>

# 但是正常的mime類型關(guān)聯(lián)在這里:
<Location /images/mixed>
ForceType None
</Location>

top

HostnameLookups 指令

說(shuō)明啟用對(duì)客戶端IP的DNS查找
語(yǔ)法HostnameLookups On|Off|Double
默認(rèn)值HostnameLookups Off
作用域server config, virtual host, directory
狀態(tài)核心(C)
模塊core

此指令啟用了DNS查詢,使得主機(jī)名能被記入日志(并用REMOTE_HOST變量傳遞給CGI/SSI)。參數(shù)Double指定進(jìn)行一次雙向DNS查詢。也就是說(shuō)在一次反向查詢之后,再對(duì)返回的結(jié)果進(jìn)行一次正向查詢。在正向查詢結(jié)果中至少應(yīng)該有一個(gè)ip地址與初始的地址相符。(在"tcpwrappers"中的術(shù)語(yǔ)是PARANOID)

不論此處如何設(shè)置,當(dāng)您使用mod_authz_host來(lái)根據(jù)主機(jī)名控制訪問(wèn)的時(shí)候,就會(huì)執(zhí)行一次雙向查詢。這對(duì)安全來(lái)說(shuō)非常必要。請(qǐng)注意如果您沒(méi)有設(shè)置"HostnameLookups Double",這種雙向查詢的結(jié)果不是自動(dòng)生成的。比如說(shuō):如果僅僅設(shè)置了"HostnameLookups On"而且請(qǐng)求是針對(duì)一個(gè)根據(jù)主機(jī)名做了限制的對(duì)象,不論雙向查詢是否失敗,CGI還是會(huì)把單向查詢的結(jié)果用REMOTE_HOST來(lái)傳送。

默認(rèn)值設(shè)置為 Off 是為了那些不需要進(jìn)行反向查詢的站點(diǎn)節(jié)約網(wǎng)絡(luò)帶寬考慮的。這對(duì)最終用戶也是有益的,因?yàn)檫@樣他們就不用忍受查詢?cè)斐傻难舆t了。高訪問(wèn)量的網(wǎng)站應(yīng)該將此指令設(shè)置為 Off 因?yàn)镈NS查詢會(huì)造成明顯的時(shí)間消耗。在bin目錄下的logresolve工具可以在離線的情況下對(duì)已經(jīng)記入日志的IP地址進(jìn)行主機(jī)名的查詢。

top

<IfDefine> 指令

說(shuō)明封裝一組只有在啟動(dòng)時(shí)當(dāng)測(cè)試結(jié)果為真時(shí)才生效的指令
語(yǔ)法<IfDefine [!]parameter-name> ... </IfDefine>
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

<IfDefine test>...</IfDefine>配置段用于包含有條件的指令。<IfDefine>配置段中的指令僅當(dāng)test結(jié)果為真時(shí)才進(jìn)行處理。如果test為假。此配置段中的指令將會(huì)被忽略。

<IfDefine>配置段中的test可以為以下兩種形式之一:

在第一種情況下,僅當(dāng)parameter-name已經(jīng)定義的情況下才對(duì)開(kāi)始和結(jié)束標(biāo)記之間的指令進(jìn)行處理。第二種情況則截然相反。僅當(dāng)parameter-name沒(méi)有定義的情況下才進(jìn)行指令的處理。

parameter-name是在服務(wù)啟動(dòng)時(shí),通過(guò)httpd命令行的 -Dparameter 這樣的形式指定的。

<IfDefine>配置段是可以嵌套的,從而可以實(shí)現(xiàn)簡(jiǎn)單的多參數(shù)測(cè)試。比如說(shuō):

httpd -DReverseProxy ...

# httpd.conf
<IfDefine ReverseProxy>
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/libproxy.so
</IfDefine>

top

<IfModule> 指令

說(shuō)明封裝指令并根據(jù)指定的模塊是否啟用為條件而決定是否進(jìn)行處理
語(yǔ)法<IfModule [!]module-file|module-identifier> ... </IfModule>
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core
兼容性module-identifier僅在 Apache 2.1 及以后的版本中可用

<IfModule test>...</IfModule>配置段用于封裝根據(jù)指定的模塊是否啟用而決定是否生效的指令。在<IfModule>配置段中的指令僅當(dāng)test為真的時(shí)候才進(jìn)行處理。如果test為假,所有其間的指令都將被忽略。

<IfModule>段中的test可以為以下兩種方式之一:

在第一種情況下,起始和結(jié)束標(biāo)記之間的指令僅當(dāng)module被載入后才被執(zhí)行。此模塊可以為編譯時(shí)靜態(tài)鏈接進(jìn)核心的模塊或是使用LoadModule指令動(dòng)態(tài)載入的模塊。第二種情況則相反,僅當(dāng)module沒(méi)有載入時(shí)才進(jìn)行指令的處理。

module可以是模塊的標(biāo)識(shí)符或者是編譯模塊時(shí)的文件名。比如,rewrite_module就是一個(gè)模塊標(biāo)識(shí)符,而mod_rewrite.c則是編譯模塊時(shí)的文件名。如果模塊包含多個(gè)源代碼文件,您應(yīng)當(dāng)使用包含STANDARD20_MODULE_STUFF字符串的那個(gè)。

<IfModule>配置段是可以嵌套的,從而可以實(shí)現(xiàn)簡(jiǎn)單的多模塊測(cè)試。

此配置段主要用于需要根據(jù)某個(gè)特定的模塊是否存在來(lái)決定是否使用某些配置的時(shí)候。指令一般都放在<IfModule>配置段中。
top

Include 指令

說(shuō)明在服務(wù)器配置文件中包含其它配置文件
語(yǔ)法Include file-path|directory-path
作用域server config, virtual host, directory
狀態(tài)核心(C)
模塊core
兼容性通配符僅在 Apache 2.0.41 及以后的版本中可用

這個(gè)指令允許在服務(wù)器配置文件中加入其它配置文件。

Shell風(fēng)格(fnmatch())的通配符可以用于按照字母順序一次包含多個(gè)文件。另外,如果Include指向了一個(gè)目錄而不是一個(gè)文件,Apache將讀入該目錄及其子目錄下的所有文件,并依照字母順序?qū)⑦@些文件作為配置文件進(jìn)行解析。但是并不推薦這么做,因?yàn)榕紶枙?huì)有臨時(shí)文件在這個(gè)目錄中生成,從而導(dǎo)致httpd啟動(dòng)失敗。

文件的路徑可以是一個(gè)完整的絕對(duì)路徑(以一個(gè)斜杠開(kāi)頭):

Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf

或是相對(duì)于ServerRoot目錄的相對(duì)路徑:

Include conf/ssl.conf
Include conf/vhosts/*.conf

請(qǐng)確保包含的目錄中不包含任何諸如編輯器臨時(shí)文件等引起誤導(dǎo)的文件,因?yàn)锳pache會(huì)嘗試讀取它們并把其中的內(nèi)容作為配置指令來(lái)處理,這樣可能會(huì)導(dǎo)致啟動(dòng)過(guò)程的失敗。運(yùn)行 apachectl configtest 將會(huì)把配置檢查時(shí)所使用的所有文件列出來(lái)以供參考。這將有助于檢驗(yàn)配置中是否僅包含了您所希望出現(xiàn)那些文件。

root@host# apachectl configtest
Processing config file: /usr/local/apache2/conf/ssl.conf
Processing config file: /usr/local/apache2/conf/vhosts/vhost1.conf
Processing config file: /usr/local/apache2/conf/vhosts/vhost2.conf
Syntax OK

參見(jiàn)

top

KeepAlive 指令

說(shuō)明啟用HTTP持久鏈接
語(yǔ)法KeepAlive On|Off
默認(rèn)值KeepAlive On
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

Keep-Alive擴(kuò)展自HTTP/1.0和HTTP/1.1的持久鏈接特性。提供了長(zhǎng)效的HTTP會(huì)話,用以在同一個(gè)TCP連接中進(jìn)行多次請(qǐng)求。在某些情況下,這樣的方式會(huì)對(duì)包含大量圖片的HTML文檔造成的延時(shí)起到50%的加速作用。在Apache1.2版本以后,您可以設(shè)置 KeepAlive On 以啟用持久鏈接。

對(duì)于HTTP/1.0的客戶端來(lái)說(shuō),僅當(dāng)客戶端指定使用的時(shí)候才會(huì)使用持久鏈接連接。此外,僅當(dāng)能夠預(yù)先知道傳輸?shù)膬?nèi)容長(zhǎng)度時(shí),才會(huì)與HTTP/1.0的客戶端建立持久鏈接連接。這意味著那些長(zhǎng)度不定的內(nèi)容,諸如CGI輸出、SSI頁(yè)面、以及服務(wù)器端生成的目錄列表等內(nèi)容一般來(lái)說(shuō)將無(wú)法使用與HTTP/1.0客戶端建立的持久鏈接連接。而對(duì)于HTTP/1.1的客戶端來(lái)說(shuō),如果沒(méi)有進(jìn)行特殊指定,持久將是默認(rèn)的連接方式。如果客戶端進(jìn)行了請(qǐng)求,將使用分塊編碼以解決在持久鏈接里發(fā)送未知長(zhǎng)度內(nèi)容的問(wèn)題。

參見(jiàn)

top

KeepAliveTimeout 指令

說(shuō)明持久鏈接中服務(wù)器在兩次請(qǐng)求之間等待的秒數(shù)
語(yǔ)法KeepAliveTimeout seconds
默認(rèn)值KeepAliveTimeout 5
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

Apache在關(guān)閉持久連接前等待下一個(gè)請(qǐng)求的秒數(shù)。一旦收到一個(gè)請(qǐng)求,超時(shí)值將會(huì)被設(shè)置為Timeout指令指定的秒數(shù)。

對(duì)于高負(fù)荷服務(wù)器來(lái)說(shuō),KeepAliveTimeout值較大會(huì)導(dǎo)致一些性能方面的問(wèn)題:超時(shí)值越大,與空閑客戶端保持連接的進(jìn)程就越多。

top

<Limit> 指令

說(shuō)明僅對(duì)指定的HTTP方法進(jìn)行訪問(wèn)控制
語(yǔ)法<Limit method [method] ... > ... </Limit>
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

訪問(wèn)控制一般來(lái)說(shuō)是對(duì)所有的訪問(wèn)方法都生效的,這也是我們普遍希望達(dá)到的效果。一般情況下,訪問(wèn)控制指令不應(yīng)該放入<Limit>段中。

<Limit>指令的目的是限制訪問(wèn)控制的效果使其僅作用于某些HTTP方法。對(duì)于其它方法,<Limit>括號(hào)中的訪問(wèn)限制將不起任何作用。下例中的訪問(wèn)控制僅作用于POST, PUT, DELETE方法,其它方法不受任何影響:

<Limit POST PUT DELETE>
Require valid-user
</Limit>

列出的方法名可為下列的一個(gè)或多個(gè):GET, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK方法名是大小寫(xiě)敏感的。如果對(duì)GET進(jìn)行了定義,它會(huì)同時(shí)作用于HEAD請(qǐng)求。TRACE方法不能被限制。

應(yīng)當(dāng)總是優(yōu)先使用<LimitExcept>段來(lái)限制訪問(wèn),而不是<Limit>段。因?yàn)?code class="directive"><LimitExcept>段能夠防范所有HTTP方法。
top

<LimitExcept> 指令

說(shuō)明對(duì)除了指定方法以外的所有HTTP方法進(jìn)行訪問(wèn)控制
語(yǔ)法<LimitExcept method [method] ... > ... </LimitExcept>
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

<LimitExcept></LimitExcept>用于封裝一組訪問(wèn)控制指令,并將其作用于所有沒(méi)有在參數(shù)中標(biāo)出的HTTP方法。也就是說(shuō),與<Limit>相反,它用于控制標(biāo)準(zhǔn)的和非標(biāo)準(zhǔn)以及無(wú)法辨識(shí)的方法。

比如:

<LimitExcept POST GET>
Require valid-user
</LimitExcept>

top

LimitInternalRecursion 指令

說(shuō)明指定內(nèi)部重定向和嵌套子請(qǐng)求的最大數(shù)量
語(yǔ)法LimitInternalRecursion number [number]
默認(rèn)值LimitInternalRecursion 10
作用域server config, virtual host
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 2.0.47 及以后的版本中可用

例如,當(dāng)使用Action指令內(nèi)部重定向原始請(qǐng)求到一個(gè)CGI腳本時(shí),一個(gè)內(nèi)部重定向?qū)?huì)發(fā)生。子請(qǐng)求是Apache的一個(gè)用于找到如果一個(gè)URI被請(qǐng)求時(shí)將會(huì)發(fā)生什么的機(jī)制。例如,mod_dir使用子請(qǐng)求來(lái)尋找那些根據(jù)DirectoryIndex指令應(yīng)當(dāng)被列出的文件。

LimitInternalRecursion可以防止服務(wù)器進(jìn)入一個(gè)內(nèi)部重定向或者子請(qǐng)求的死循環(huán)而崩潰。這樣的死循環(huán)通常由錯(cuò)誤的配置引起。

這個(gè)指令存儲(chǔ)了兩個(gè)不同的限制,這兩個(gè)限制是基于每個(gè)單獨(dú)的請(qǐng)求進(jìn)行計(jì)算的。第一個(gè)number限制了內(nèi)部重定向鏈的最大長(zhǎng)度(一個(gè)接一個(gè))。第二個(gè)number限制了子請(qǐng)求的最大嵌套層數(shù)。如果你只指定了一個(gè)number ,那么將會(huì)被同時(shí)應(yīng)用于這兩個(gè)限制。

示例

LimitInternalRecursion 5

top

LimitRequestBody 指令

說(shuō)明限制客戶端發(fā)送的HTTP請(qǐng)求體的最大字節(jié)長(zhǎng)度
語(yǔ)法LimitRequestBody bytes
默認(rèn)值LimitRequestBody 0
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

bytes在0(意味著無(wú)限制)到2147483647(2GB)間限制了請(qǐng)求體所允許的字節(jié)數(shù)。

LimitRequestBody可以讓用戶在其作用范圍內(nèi)(整個(gè)服務(wù)器、特定目錄、特定文件、特定位置)設(shè)置一個(gè)允許客戶端發(fā)送的HTTP請(qǐng)求體的最大字節(jié)長(zhǎng)度的限制。如果客戶端的請(qǐng)求超出了這個(gè)限制,服務(wù)器會(huì)回應(yīng)一個(gè)錯(cuò)誤而不是伺服這個(gè)請(qǐng)求。一個(gè)普通請(qǐng)求的信息體在很大程度上取決于資源的自然屬性和這個(gè)資源允許的方法。CGI腳本經(jīng)常用消息體把表單的信息傳遞給服務(wù)器。使用PUT方法至少會(huì)需要與服務(wù)器期望從這個(gè)資源得到的信息量差不多大小的值。

此指令給了服務(wù)器管理員更大的可控性以控制客戶端不正常的請(qǐng)求行為。這有助于避免某些形式的拒絕服務(wù)攻擊。

比如,如果您允許文件上傳到某個(gè)位置,而且希望能將上傳文件的大小設(shè)置為100K,您可以使用下面的指令:

LimitRequestBody 102400

top

LimitRequestFields 指令

說(shuō)明限制接受客戶端請(qǐng)求中HTTP請(qǐng)求頭域的數(shù)量
語(yǔ)法LimitRequestFields number
默認(rèn)值LimitRequestFields 100
作用域server config
狀態(tài)核心(C)
模塊core

Number是一個(gè)0(意味著不限)到32767之間的整數(shù)。默認(rèn)值為編譯時(shí)的常量DEFAULT_LIMIT_REQUEST_FIELDS(發(fā)布值為100)。

LimitRequestFields指令允許服務(wù)器管理員修改在一個(gè)HTTP請(qǐng)求中的請(qǐng)求頭域的數(shù)量限制。服務(wù)器需要此值大于一個(gè)普通客戶端請(qǐng)求中包含頭域的數(shù)量。一個(gè)客戶端請(qǐng)求頭域的數(shù)量很少大于20,但根據(jù)客戶端的不同這個(gè)數(shù)字有很大的差別,經(jīng)常取決于用戶配置他們的瀏覽器擴(kuò)展以支持更詳細(xì)的內(nèi)容協(xié)商?蛇x的HTTP擴(kuò)展經(jīng)常使用請(qǐng)求頭域來(lái)實(shí)現(xiàn)。

這個(gè)指令給了服務(wù)器管理員更大的可控性以控制客戶端不正常的請(qǐng)求行為。這有助于避免某些形式的拒絕服務(wù)攻擊。如果正常使用的客戶端得到了服務(wù)器的錯(cuò)誤應(yīng)答,指出其在請(qǐng)求中發(fā)送了過(guò)多的頭域,您應(yīng)該適當(dāng)?shù)脑龃蟠酥怠?/p>

例如:

LimitRequestFields 50

top

LimitRequestFieldSize 指令

說(shuō)明限制客戶端發(fā)送的請(qǐng)求頭的字節(jié)數(shù)
語(yǔ)法LimitRequestFieldsize bytes
默認(rèn)值LimitRequestFieldsize 8190
作用域server config
狀態(tài)核心(C)
模塊core

bytes指定了HTTP請(qǐng)求頭允許的字節(jié)大小。

LimitRequestFieldSize指令允許服務(wù)器管理員增加或減少HTTP請(qǐng)求頭域大小的限制。一般來(lái)說(shuō),服務(wù)器需要此值足夠大,以適應(yīng)普通客戶端的任何請(qǐng)求的頭域大小。一個(gè)普通頭域的大小對(duì)于不同的客戶端來(lái)說(shuō)是有很大差別的,一般與用戶配置他們的瀏覽器以支持更多的內(nèi)容協(xié)議密切相關(guān)。SPNEGO的認(rèn)證頭最大可能達(dá)到12392字節(jié)。

這個(gè)指令給了服務(wù)器管理員更大的可控性以控制客戶端不正常的請(qǐng)求行為。這有助于避免某些形式的拒絕服務(wù)攻擊。

舉例如下:

LimitRequestFieldSize 4094

一般情況下,請(qǐng)不要改變這個(gè)設(shè)置,而是保持其默認(rèn)設(shè)置。
top

LimitRequestLine 指令

說(shuō)明限制接受客戶端發(fā)送的HTTP請(qǐng)求行的字節(jié)數(shù)
語(yǔ)法LimitRequestLine bytes
默認(rèn)值LimitRequestLine 8190
作用域server config
狀態(tài)核心(C)
模塊core

bytes將設(shè)置HTTP請(qǐng)求行的字節(jié)數(shù)限制。

LimitRequestLine指令允許服務(wù)器管理員增加或減少客戶端HTTP請(qǐng)求行允許大小的限制。因?yàn)檎?qǐng)求行包括HTTP方法、URI、協(xié)議版本,所以LimitRequestLine指令會(huì)限制請(qǐng)求URI的長(zhǎng)度。服務(wù)器會(huì)需要這個(gè)值足夠大以裝載它所有的資源名,包括可能在GET請(qǐng)求中所傳遞的查詢部分的所有信息。

這個(gè)指令給了服務(wù)器管理員更大的可控性以控制客戶端不正常的請(qǐng)求行為。這有助于避免某些形式的拒絕服務(wù)攻擊。

舉例如下:

LimitRequestLine 4094

一般情況下,不需要改變此設(shè)置的默認(rèn)值。
top

LimitXMLRequestBody 指令

說(shuō)明限制基于XML的請(qǐng)求體的大小
語(yǔ)法LimitXMLRequestBody bytes
默認(rèn)值LimitXMLRequestBody 1000000
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

限制基于XML的請(qǐng)求體大小的最大字節(jié)數(shù),"0"將禁用這一檢查。

比如:

LimitXMLRequestBody 0

top

<Location> 指令

說(shuō)明將封裝的指令作用于匹配的URL
語(yǔ)法<Location URL-path|URL> ... </Location>
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

<Location>提供了基于URL的訪問(wèn)控制。與<Directory>指令類似,它也會(huì)啟用一個(gè)以</Location>結(jié)尾的配置段。<Location>配置段的處理位于<Directory>, .htaccess, <Files>之后,并依照在配置文件中出現(xiàn)的順序進(jìn)行處理。

<Location>配置段完全獨(dú)立于文件系統(tǒng)之外操作。這有幾個(gè)重要的后果。最重要的是<Location>不能用于針對(duì)文件系統(tǒng)的訪問(wèn)控制。因?yàn)榭赡軙?huì)有幾個(gè)不同的URL指向文件系統(tǒng)中的同一個(gè)文件,所以這樣的控制常常會(huì)被很容易的繞過(guò)。

何時(shí)使用<Location>?

使用<Location>來(lái)將指令應(yīng)用于獨(dú)立于文件系統(tǒng)之外的內(nèi)容。文件系統(tǒng)之內(nèi)的內(nèi)容請(qǐng)使用<Directory><Files>指令。不過(guò)一個(gè)例外是<Location /> ,它可以方便的作用于所用URL。

對(duì)所有的原始(非代理)請(qǐng)求來(lái)說(shuō),匹配的URL應(yīng)該是具有"/path/"形式的URL路徑。不包括訪問(wèn)方法、主機(jī)名、端口或查詢字符串等。對(duì)于代理的請(qǐng)求,匹配的URL必須為"scheme://servername/path"的形式,而且必須包括前綴。

URL可以用一個(gè)通配符字符串來(lái)進(jìn)行通配符的處理。"?"匹配任何單個(gè)的字符,而"*"匹配所有字符序列。

也可以附加"~"字符來(lái)表示使用正則表達(dá)式。例如:

<Location ~ "/(extra|special)/data">

將匹配所有包含字符串"/extra/data"或"/special/data"的URL。在Apache1.3及其后續(xù)版本中,加入了一個(gè)新的推薦使用的<LocationMatch>指令,其功能與<Location>的正則表達(dá)式版本相同。

<Location>的功能在與SetHandler指令聯(lián)用時(shí)能發(fā)揮最大效能。比如啟用狀態(tài)請(qǐng)求,但僅對(duì)來(lái)自foo.com的用戶起效,您可以這樣使用:

<Location /status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from .foo.com
</Location>

請(qǐng)注意"/"(斜線)

斜線字符根據(jù)它在URL中出現(xiàn)的位置不同有著特殊的意義。大家可能都已經(jīng)習(xí)慣在文件系統(tǒng)中,多個(gè)連續(xù)的斜線會(huì)被作為單一的斜線處理(例如"/home///foo"與"/home/foo"相同)。但在URL里面,這樣是行不通的。<LocationMatch>指令和正則表達(dá)式版本的<Location>要求您明確使用多重斜線。比如:<LocationMatch ^/abc>將匹配請(qǐng)求"/abc"但不會(huì)匹配請(qǐng)求"//abc"。而非正則表達(dá)式版本的<Location>指令在用于代理請(qǐng)求時(shí),也有類似表現(xiàn)。但當(dāng)非正則表達(dá)式版本的<Location>作用于非代理請(qǐng)求時(shí),它會(huì)將多個(gè)毗鄰的斜線認(rèn)作單個(gè)斜線。比如,如果您指定了<Location /abc/def>而請(qǐng)求是指向"/abc//def"的,那么它們就是匹配的。

參見(jiàn)

top

<LocationMatch> 指令

說(shuō)明將封裝的指令作用于正則表達(dá)式匹配的URL
語(yǔ)法<LocationMatch regex> ... </LocationMatch>
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

<LocationMatch><Location>指令相同,提供了基于URL的訪問(wèn)控制。但它使用正則表達(dá)式作為參數(shù),而不是簡(jiǎn)單字符串。比如:

<LocationMatch "/(extra|special)/data">

將匹配包含子串"/extra/data"或"/special/data"的URL。

參見(jiàn)

top

LogLevel 指令

說(shuō)明控制錯(cuò)誤日志的詳細(xì)程度
語(yǔ)法LogLevel level
默認(rèn)值LogLevel warn
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

LogLevel用于調(diào)整記錄在錯(cuò)誤日志中的信息的詳細(xì)程度。(參見(jiàn)ErrorLog指令)?梢赃x擇下列level,依照重要性降序排列:

Level 描述 例子
emerg 緊急(系統(tǒng)無(wú)法使用)"Child cannot open lock file. Exiting"
alert 必須立即采取措施"getpwuid: couldn't determine user name from uid"
crit 致命情況"socket: Failed to get a socket, exiting child"
error 錯(cuò)誤情況"Premature end of script headers"
warn 警告情況"child process 1234 did not exit, sending another SIGHUP"
notice 一般重要情況"httpd: caught SIGBUS, attempting to dump core in ..."
info 普通信息"Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..."
debug 調(diào)試信息"Opening config file ..."

當(dāng)指定了某個(gè)級(jí)別時(shí),所有級(jí)別高于它的信息也會(huì)被同時(shí)記錄。比如,指定 LogLevel info ,則所有noticewarn級(jí)別的信息也會(huì)被記錄。

建議至少使用crit級(jí)別。

示例如下:

LogLevel notice

注意

當(dāng)錯(cuò)誤日志是一個(gè)單獨(dú)分開(kāi)的正式文件的時(shí)候,notice級(jí)別的消息總是會(huì)被記錄下來(lái),而不能被屏蔽。但是,當(dāng)使用syslog來(lái)記錄時(shí)就沒(méi)有這個(gè)問(wèn)題。

top

MaxKeepAliveRequests 指令

說(shuō)明一個(gè)持久鏈接中允許的最大請(qǐng)求數(shù)量
語(yǔ)法MaxKeepAliveRequests number
默認(rèn)值MaxKeepAliveRequests 100
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

MaxKeepAliveRequests指令限制了當(dāng)啟用KeepAlive時(shí),每個(gè)連接允許的請(qǐng)求數(shù)量。如果將此值設(shè)為"0",將不限制請(qǐng)求的數(shù)目。我們建議最好將此值設(shè)為一個(gè)比較大的值,以確保最優(yōu)的服務(wù)器性能。

例如:

MaxKeepAliveRequests 500

top

NameVirtualHost 指令

說(shuō)明為一個(gè)基于域名的虛擬主機(jī)指定一個(gè)IP地址(和端口)
語(yǔ)法NameVirtualHost addr[:port]
作用域server config
狀態(tài)核心(C)
模塊core

如果您要配置基于域名的虛擬主機(jī)NameVirtualHost指令就是您必須的指令之一。

盡管addr參數(shù)可以使用主機(jī)名,但建議您還是使用IP地址。比如:

NameVirtualHost 111.22.33.44

使用NameVirtualHost指令,您可以指定一個(gè)基于域名的虛擬主機(jī)將使用哪個(gè)IP地址來(lái)接受請(qǐng)求。在一個(gè)防火墻或是其它代理接受了請(qǐng)求并把它轉(zhuǎn)到服務(wù)器所在的另外一個(gè)IP地址上的情況下,您必須指定伺服請(qǐng)求的機(jī)器物理界面上的IP地址。如果您對(duì)于多個(gè)地址使用了多個(gè)基于域名的虛擬主機(jī),您應(yīng)該為每個(gè)地址使用這個(gè)指令。

注意

"主服務(wù)器"和任何其它"_default_"服務(wù)器都不會(huì)伺服發(fā)送到NameVirtualHost IP地址的請(qǐng)求。(除非您指定了NameVirtualHost,但沒(méi)有為這個(gè)地址指定任何VirtualHost)。

另外,您還可以為您使用的基于域名的虛擬主機(jī)指定一個(gè)端口號(hào)。比如:

NameVirtualHost 111.22.33.44:8080

IPv6地址必須封裝在一對(duì)方括號(hào)內(nèi),如下例所示:

NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080

為了接受所有界面的請(qǐng)求,您可以使用"*":

NameVirtualHost *

<VirtualHost>指令的參數(shù)

請(qǐng)注意,<VirtualHost>指令的參數(shù)必須與NameVirtualHost指令的參數(shù)完全匹配。

NameVirtualHost 1.2.3.4
<VirtualHost 1.2.3.4>
# ...
</VirtualHost>

參見(jiàn)

top

Options 指令

說(shuō)明配置在特定目錄中可以使用哪些特性
語(yǔ)法Options [+|-]option [[+|-]option] ...
默認(rèn)值Options All
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)Options
狀態(tài)核心(C)
模塊core

Options指令控制了在特定目錄中將使用哪些服務(wù)器特性。

option可以為None ,在這種情況下,將不啟用任何額外特性;蛟O(shè)置為以下選項(xiàng)中的一個(gè)或多個(gè):

All
MultiViews之外的所有特性。這是默認(rèn)設(shè)置。
ExecCGI
允許使用mod_cgi執(zhí)行CGI腳本。
FollowSymLinks
服務(wù)器允許在此目錄中使用符號(hào)連接。

注意:即使服務(wù)器會(huì)使用符號(hào)連接,但它不會(huì)改變用于匹配<Directory>段的路徑名。

注意:如果此配置位于<Location>配置段中,則此設(shè)置會(huì)被忽略

Includes
允許使用mod_include提供的服務(wù)器端包含。
IncludesNOEXEC
允許服務(wù)器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍可以從ScriptAlias目錄使用"#include virtual"虛擬CGI腳本。
Indexes
如果一個(gè)映射到目錄的URL被請(qǐng)求,而此目錄中又沒(méi)有DirectoryIndex(例如:index.html),那么服務(wù)器會(huì)返回由mod_autoindex生成的一個(gè)格式化后的目錄列表。
MultiViews
允許使用mod_negotiation提供內(nèi)容協(xié)商的"多重視圖"(MultiViews)。
SymLinksIfOwnerMatch
服務(wù)器僅在符號(hào)連接與其目的目錄或文件的擁有者具有相同的uid時(shí)才使用它。

注意

如果此配置出現(xiàn)在<Location>配置段中,此選項(xiàng)將被忽略。

一般來(lái)說(shuō),如果一個(gè)目錄被多次設(shè)置了Options ,則最特殊的一個(gè)會(huì)被完全接受(其它的被忽略),而各個(gè)可選項(xiàng)的設(shè)定彼此并不融合(參見(jiàn)配置段的合并)。然而,如果所有作用于Options指令的可選項(xiàng)前都加有"+"或"-"符號(hào),此可選項(xiàng)將被合并。所有前面加有"+"號(hào)的可選項(xiàng)將強(qiáng)制覆蓋當(dāng)前的可選項(xiàng)設(shè)置,而所有前面有"-"號(hào)的可選項(xiàng)將強(qiáng)制從當(dāng)前可選項(xiàng)設(shè)置中去除。

比如,沒(méi)有任何"+"或"-"符號(hào):

<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>

<Directory /web/docs/spec>
Options Includes
</Directory>

那么只有將Includes設(shè)置到/web/docs/spec目錄上。然而如果第二個(gè)Options指令使用了"+"和"-"符號(hào):

<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>

<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>

那么就會(huì)有FollowSymLinksIncludes設(shè)置到/web/docs/spec目錄上。

注意

使用 -IncludesNOEXEC-Includes 時(shí),不論前面如何設(shè)置,都會(huì)完全禁用服務(wù)器端包含。

沒(méi)有其它設(shè)置時(shí),默認(rèn)設(shè)置為 All

top

Require 指令

說(shuō)明指定哪些認(rèn)證用戶允許訪問(wèn)該資源
語(yǔ)法Require entity-name [entity-name] ...
作用域directory, .htaccess
覆蓋項(xiàng)AuthConfig
狀態(tài)核心(C)
模塊core

這個(gè)指令指定哪些認(rèn)證用戶允許訪問(wèn)該資源。這些限制由授權(quán)支持模塊實(shí)現(xiàn)。語(yǔ)法如下:

Require user userid [userid] ...
只有指定的用戶可以訪問(wèn)此目錄。
Require group group-name [group-name] ...
只有隸屬于指定組的用戶可以訪問(wèn)此目錄。
Require valid-user
所有有效用戶都可以訪問(wèn)此目錄。

提供Require指令的授權(quán)支持模塊有:mod_authz_user, mod_authz_groupfile, mod_authnz_ldap, mod_authz_dbm, mod_authz_owner 。

Require必須伴隨AuthNameAuthType指令,以及諸如AuthUserFileAuthGroupFile指令(用以定義用戶和用戶組)以確保其能夠正確工作。例如:

AuthType Basic
AuthName "Restricted Resource"
AuthUserFile /web/users
AuthGroupFile /web/groups
Require group admin

使用這種方法提供的訪問(wèn)控制對(duì)所有方法都有效。這是一般情況下期望達(dá)到的效果。如果您僅希望對(duì)某個(gè)特定的方法加以限制,而不涉及其它方法時(shí),您可以將Require語(yǔ)句放入<Limit>配置段中。

如果RequireAllowDeny指令同時(shí)使用,那么這些指令之間的相互作用由Satisfy指令控制。

在子目錄中刪除訪問(wèn)控制

下面的例子展示了如何使用Satisfy指令在一個(gè)受保護(hù)的目錄下的子目錄中取消訪問(wèn)控制。使用這種方法必須十分小心,因?yàn)樗∠?code class="module">mod_authz_host實(shí)現(xiàn)的任何訪問(wèn)控制。

<Directory /path/to/protected/>
Require user david
</Directory>
<Directory /path/to/protected/unprotected>
# 該目錄下的所有認(rèn)證和訪問(wèn)控制都被取消了
Satisfy Any
Allow from all
</Directory>

參見(jiàn)

top

RLimitCPU 指令

說(shuō)明限制Apache子進(jìn)程派生的進(jìn)程占用CPU的最大秒數(shù)
語(yǔ)法RLimitCPU seconds|max [seconds|max]
默認(rèn)值未定義,使用操作系統(tǒng)默認(rèn)值
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

使用一個(gè)或兩個(gè)參數(shù)。第一個(gè)參數(shù)設(shè)置了所有進(jìn)程的軟資源限制,第二個(gè)參數(shù)設(shè)置了最大資源限制。兩個(gè)參數(shù)均可設(shè)置為一個(gè)數(shù)值或是"max"以表示設(shè)置為操作系統(tǒng)允許的最大值。增大此資源限制最大值需要以root運(yùn)行服務(wù)器或是在初始化啟動(dòng)語(yǔ)句中進(jìn)行設(shè)置。

這個(gè)限制將作用于Apache子進(jìn)程服務(wù)的請(qǐng)求所衍生出的進(jìn)程,而不是Apache子進(jìn)程本身。這個(gè)范圍包括CGI腳本和SSI執(zhí)行命令,但不包括所有從Apache父進(jìn)程衍生出的進(jìn)程。比如管道日志。

CPU資源限制表示為每進(jìn)程占用的秒數(shù)。

參見(jiàn)

top

RLimitMEM 指令

說(shuō)明限制由Apache子進(jìn)程派生的進(jìn)程占用的最大內(nèi)存字節(jié)數(shù)
語(yǔ)法RLimitMEM bytes|max [bytes|max]
默認(rèn)值未定義,使用操作系統(tǒng)默認(rèn)值
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

使用一個(gè)或兩個(gè)參數(shù)。第一個(gè)參數(shù)設(shè)置了所有進(jìn)程的軟資源限制,第二個(gè)參數(shù)設(shè)置了最大資源限制。兩個(gè)參數(shù)均可設(shè)置為一個(gè)數(shù)值或是"max"以表示設(shè)置為操作系統(tǒng)允許的最大值。增大此資源限制最大值需要以root運(yùn)行服務(wù)器或是在初始化啟動(dòng)語(yǔ)句中進(jìn)行設(shè)置。

這個(gè)限制將作用于Apache子進(jìn)程服務(wù)的請(qǐng)求所衍生出的進(jìn)程,而不是Apache子進(jìn)程本身。這個(gè)范圍包括CGI腳本和SSI執(zhí)行命令,但不包括所有從Apache父進(jìn)程衍生出的進(jìn)程。比如管道日志。

內(nèi)存資源限制表示為每進(jìn)程占用的字節(jié)數(shù)。

參見(jiàn)

top

RLimitNPROC 指令

說(shuō)明限制由Apache子進(jìn)程派生的進(jìn)程所派生的進(jìn)程數(shù)目
語(yǔ)法RLimitNPROC number|max [number|max]
默認(rèn)值未定義,使用操作系統(tǒng)默認(rèn)值
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

使用一個(gè)或兩個(gè)參數(shù)。第一個(gè)參數(shù)設(shè)置了所有進(jìn)程的軟資源限制,第二個(gè)參數(shù)設(shè)置了最大資源限制。兩個(gè)參數(shù)均可設(shè)置為一個(gè)數(shù)值或是"max"以表示設(shè)置為操作系統(tǒng)允許的最大值。增大此資源限制最大值需要以root運(yùn)行服務(wù)器或是在初始化啟動(dòng)語(yǔ)句中進(jìn)行設(shè)置。

這個(gè)限制將作用于Apache子進(jìn)程服務(wù)的請(qǐng)求所衍生出的進(jìn)程,而不是Apache子進(jìn)程本身。這個(gè)范圍包括CGI腳本和SSI執(zhí)行命令,但不包括所有從Apache父進(jìn)程衍生出的進(jìn)程。比如管道日志。

進(jìn)程限制控制了每個(gè)用戶的進(jìn)程數(shù)。

注意

如果CGI進(jìn)程不是以web服務(wù)器的uid啟動(dòng)的,那么這個(gè)指令將限制服務(wù)器自己能夠創(chuàng)建的進(jìn)程數(shù)目。此種情況將在error_log中以"cannot fork"進(jìn)行記錄。

參見(jiàn)

top

Satisfy 指令

說(shuō)明主機(jī)級(jí)別的訪問(wèn)控制和用戶認(rèn)證之間的相互關(guān)系
語(yǔ)法Satisfy Any|All
默認(rèn)值Satisfy All
作用域directory, .htaccess
覆蓋項(xiàng)AuthConfig
狀態(tài)核心(C)
模塊core
兼容性2.0.51及以后版本中受<Limit><LimitExcept>指令影響

同時(shí)使用AllowRequire時(shí)的訪問(wèn)策略。參數(shù)可以設(shè)置為 AllAny 。這個(gè)指令僅在某個(gè)特定區(qū)域的訪問(wèn)控制同時(shí)被用戶名/密碼客戶端主機(jī)地址進(jìn)行限定的時(shí)候起作用。默認(rèn)行為(All)采取客戶端首先通過(guò)地址訪問(wèn)限制并且輸入有效的用戶名和密碼的方式。使用可選項(xiàng) Any 將使客戶端在通過(guò)主機(jī)限制或是輸入一個(gè)有效的用戶名和密碼兩種方式之一得到訪問(wèn)權(quán)限。這樣,就可以通過(guò)密碼來(lái)限制一個(gè)區(qū)域的訪問(wèn),但允許某些特定地址的客戶端訪問(wèn)時(shí)不需要輸入密碼。

比如,如果您想讓您局域網(wǎng)內(nèi)的用戶訪問(wèn)您的web網(wǎng)站時(shí)不受限制,但局域網(wǎng)外的用戶需提供密碼才能進(jìn)行訪問(wèn),您可以采取類似如下的配置:

Require valid-user
Allow from 192.168.1
Satisfy Any

從2.0.51版本開(kāi)始,Satisfy指令可以被限定于由<Limit><LimitExcept>配置段指定的特定的方法。

參見(jiàn)

top

ScriptInterpreterSource 指令

說(shuō)明定位CGI腳本解釋器
語(yǔ)法ScriptInterpreterSource Registry|Registry-Strict|Script
默認(rèn)值ScriptInterpreterSource Script
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性僅用于Win32;Registry-Strict選項(xiàng)僅在 Apache 2.0 及以后的版本中可用

這個(gè)指令控制Apache如何找到運(yùn)行CGI腳本的解釋器。默認(rèn)為Script ,使用在腳本中以"#!"行指定的解釋器。在Win32上這一行通?瓷先ハ瘢

#!C:/Perl/bin/perl.exe

或者,如果perl的位置已經(jīng)在PATH中指定,則可以簡(jiǎn)單的寫(xiě)成:

#!perl

設(shè)置為 ScriptInterpreterSource Registry 將使用腳本文件擴(kuò)展名(比如.pl)作為搜索項(xiàng)對(duì)Windows注冊(cè)表項(xiàng)HKEY_CLASSES_ROOT進(jìn)行搜索。 這個(gè)命令由注冊(cè)表子鍵Shell\ExecCGI\CommandShell\Open\Command定義(如果前者不存在)。如果無(wú)法找到該注冊(cè)表項(xiàng),Apache將采用默認(rèn)值:Script

安全

ScriptInterpreterSource Registry 和使用了ScriptAlias的目錄一起使用時(shí)需要非常小心,因?yàn)锳pache會(huì)執(zhí)行這個(gè)目錄下的所有文件。Registry設(shè)置可能會(huì)導(dǎo)致對(duì)不可執(zhí)行文件的不期望的程序調(diào)用。例如,在大多數(shù)Windows上默認(rèn)打開(kāi).htm文件的程序是IE,所以任何一個(gè)對(duì)腳本目錄中.htm文件的請(qǐng)求將會(huì)在服務(wù)器后臺(tái)打開(kāi)一個(gè)IE。這是一個(gè)讓你的服務(wù)器在數(shù)分鐘內(nèi)崩潰的好辦法。

Registry-Strict選項(xiàng)和Registry差不多,但是只使用Shell\ExecCGI\Command子鍵。ExecCGI鍵不是一個(gè)普通的鍵。它必須在注冊(cè)表中手動(dòng)配置,從而可以防止意外的程序調(diào)用。

top

ServerAdmin 指令

說(shuō)明服務(wù)器返回給客戶端的錯(cuò)誤信息中包含的管理員郵件地址
語(yǔ)法ServerAdmin email-address|URL
作用域server config, virtual host
狀態(tài)核心(C)
模塊core

ServerAdmin設(shè)置了在所有返回給客戶端的錯(cuò)誤信息中包含的管理員郵件地址。如果httpd不能將提供的參數(shù)識(shí)別為URL,它就會(huì)假定它是一個(gè)email-address ,并在超連接中用在mailto:后面。推薦使用一個(gè)Email地址,因?yàn)樵S多CGI腳本是這樣認(rèn)為的。如果你確實(shí)想使用URL,一定要保證指向一個(gè)你能夠控制的服務(wù)器,否則用戶將無(wú)法確保一定可以和你取得聯(lián)系。

為這個(gè)目的專門(mén)設(shè)置一個(gè)郵箱是值得的,比如:

ServerAdmin www-admin@foo.example.com

因?yàn)橛脩粢话悴粫?huì)注意到他們?cè)谟懻摲⻊?wù)器的問(wèn)題!

top

ServerAlias 指令

說(shuō)明匹配一個(gè)基于域名的虛擬主機(jī)的別名
語(yǔ)法ServerAlias hostname [hostname] ...
作用域virtual host
狀態(tài)核心(C)
模塊core

ServerAlias指令設(shè)定主機(jī)的別名,用于基于域名的虛擬主機(jī)。

<VirtualHost *>
ServerName server.domain.com
ServerAlias server server2.domain.com server2
# ...
</VirtualHost>

參見(jiàn)

top

ServerName 指令

說(shuō)明服務(wù)器用于辨識(shí)自己的主機(jī)名和端口號(hào)
語(yǔ)法ServerName fully-qualified-domain-name[:port]
作用域server config, virtual host
狀態(tài)核心(C)
模塊core
兼容性在2.0版中,這個(gè)指令代替了1.3版的Port指令的功能

ServerName指令設(shè)置了服務(wù)器用于辨識(shí)自己的主機(jī)名和端口號(hào)。這主要用于創(chuàng)建重定向URL。比如,一個(gè)放置web服務(wù)器的主機(jī)名為simple.example.com ,但同時(shí)有一個(gè)DNS別名www.example.com 。而您希望web服務(wù)器更顯著一點(diǎn),您可以使用如下的指令:

ServerName www.example.com:80

當(dāng)沒(méi)有指定ServerName時(shí),服務(wù)器會(huì)嘗試對(duì)IP地址進(jìn)行反向查詢來(lái)推斷主機(jī)名。如果在ServerName中沒(méi)有指定端口號(hào),服務(wù)器會(huì)使用接受請(qǐng)求的那個(gè)端口。為了加強(qiáng)可靠性和可預(yù)測(cè)性,您應(yīng)該使用ServerName顯式的指定一個(gè)主機(jī)名和端口號(hào)。

如果使用的是基于域名的虛擬主機(jī),在<VirtualHost>段中的ServerName將是為了匹配這個(gè)虛擬主機(jī),在"Host:"請(qǐng)求頭中必須出現(xiàn)的主機(jī)名。

參見(jiàn)UseCanonicalNameUseCanonicalPhysicalPort指令以獲得關(guān)于自引用URL(比如使用mod_dir模塊)是需要指定一個(gè)特定端口,還是使用客戶端請(qǐng)求的端口號(hào)的更詳細(xì)的信息。

參見(jiàn)

top

ServerPath 指令

說(shuō)明為兼容性不好的瀏覽器訪問(wèn)基于域名的虛擬主機(jī)保留的URL路徑名
語(yǔ)法ServerPath URL-path
作用域virtual host
狀態(tài)核心(C)
模塊core

ServerPath指令為主機(jī)設(shè)置了保守的(legacy)URL路徑名,用于和基于域名的虛擬主機(jī)配合使用。

參見(jiàn)

top

ServerRoot 指令

說(shuō)明安裝服務(wù)器的基礎(chǔ)目錄
語(yǔ)法ServerRoot directory-path
默認(rèn)值ServerRoot /usr/local/apache
作用域server config
狀態(tài)核心(C)
模塊core

ServerRoot指令設(shè)置了服務(wù)器所在的目錄。一般來(lái)說(shuō)它將包含conf/logs/子目錄。其它配置文件的相對(duì)路徑即基于此目錄 (比如IncludeLoadModule)。

示例

ServerRoot /home/httpd

參見(jiàn)

top

ServerSignature 指令

說(shuō)明配置服務(wù)器生成頁(yè)面的頁(yè)腳
語(yǔ)法ServerSignature On|Off|EMail
默認(rèn)值ServerSignature Off
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)All
狀態(tài)核心(C)
模塊core

ServerSignature指令允許您配置服務(wù)器端生成文檔的頁(yè)腳(錯(cuò)誤信息、mod_proxy的ftp目錄列表、mod_info的輸出)。您啟用這個(gè)頁(yè)腳的原因主要在于處于一個(gè)代理服務(wù)器鏈中的時(shí)候,用戶基本無(wú)法辨識(shí)出究竟是鏈中的哪個(gè)服務(wù)器真正產(chǎn)生了返回的錯(cuò)誤信息。

默認(rèn)的 Off 設(shè)置沒(méi)有錯(cuò)誤行(這樣便與Apache1.2及更舊版本兼容)。采用 On 會(huì)簡(jiǎn)單的增加一行關(guān)于服務(wù)器版本和正在伺服的虛擬主機(jī)的ServerName ,而 EMail 設(shè)置會(huì)如文檔中說(shuō)明的那樣額外創(chuàng)建一個(gè)指向ServerAdmin的"mailto:"部分。

對(duì)于2.0.44以后的版本,顯示的詳細(xì)服務(wù)器版本號(hào)將由ServerTokens指令控制。

參見(jiàn)

top

ServerTokens 指令

說(shuō)明配置"Server:"應(yīng)答頭
語(yǔ)法ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
默認(rèn)值ServerTokens Full
作用域server config
狀態(tài)核心(C)
模塊core

這個(gè)指令控制了服務(wù)器回應(yīng)給客戶端的"Server:"應(yīng)答頭是否包含關(guān)于服務(wù)器操作系統(tǒng)類型和編譯進(jìn)的模塊描述信息。

ServerTokens Prod[uctOnly]
服務(wù)器會(huì)發(fā)送(比如): Server: Apache
ServerTokens Major
服務(wù)器會(huì)發(fā)送(比如): Server: Apache/2
ServerTokens Minor
服務(wù)器會(huì)發(fā)送(比如): Server: Apache/2.0
ServerTokens Min[imal]
服務(wù)器會(huì)發(fā)送(比如): Server: Apache/2.0.41
ServerTokens OS
服務(wù)器會(huì)發(fā)送(比如): Server: Apache/2.0.41 (Unix)
ServerTokens Full (或未指定)
服務(wù)器會(huì)發(fā)送(比如): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

此設(shè)置將作用于整個(gè)服務(wù)器,而且不能用在虛擬主機(jī)的配置段中。

2.0.44版本以后,這個(gè)指令還控制著ServerSignature指令的顯示內(nèi)容。

參見(jiàn)

top

SetHandler 指令

說(shuō)明強(qiáng)制所有匹配的文件被一個(gè)指定的處理器處理
語(yǔ)法SetHandler handler-name|None
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core
兼容性在Apache2.0中移入核心

當(dāng)這個(gè)指令放入.htaccess<Directory><Location>配置段中時(shí),這個(gè)指令將強(qiáng)制所有匹配的文件通過(guò)handler-name指定的處理器處理。比如:如果想不管某個(gè)目錄中的文件具有什么擴(kuò)展名,都將它作為圖像映射規(guī)則文件來(lái)解析,您可以將下例放入那個(gè)目錄的.htaccess中:

SetHandler imap-file

再來(lái)一個(gè)例子:如果您想當(dāng)http://servername/status被請(qǐng)求時(shí),服務(wù)器顯示一個(gè)狀態(tài)報(bào)告,您可以將下面的語(yǔ)句放入httpd.conf里面:

<Location /status>
SetHandler server-status
</Location>

你可以通過(guò)使用 None 來(lái)改寫(xiě)一個(gè)早先定義的SetHandler指令。

參見(jiàn)

top

SetInputFilter 指令

說(shuō)明設(shè)置處理客戶端請(qǐng)求和POST輸入時(shí)使用的過(guò)濾器
語(yǔ)法SetInputFilter filter[;filter...]
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core

SetInputFilter指令為服務(wù)器接受并處理客戶端請(qǐng)求和POST輸入設(shè)置了過(guò)濾器。這是在其它地方(包括AddInputFilter指令)設(shè)置的過(guò)濾器以外附加的過(guò)濾器。

如果設(shè)置了多于一個(gè)過(guò)濾器,它們必須按照處理內(nèi)容的順序用分號(hào)(;)分隔。

參見(jiàn)

top

SetOutputFilter 指令

說(shuō)明設(shè)置用于處理服務(wù)器輸出應(yīng)答的過(guò)濾器
語(yǔ)法SetOutputFilter filter[;filter...]
作用域server config, virtual host, directory, .htaccess
覆蓋項(xiàng)FileInfo
狀態(tài)核心(C)
模塊core

SetOutputFilter指令設(shè)置了用于在服務(wù)器應(yīng)答發(fā)送到客戶端之前使用的過(guò)濾器。這是在其它地方(包括AddOutputFilter指令)設(shè)置的過(guò)濾器以外附加的過(guò)濾器。

例如:下述配置將會(huì)把/www/data/目錄下的所有文件作為SSI文件來(lái)處理。

<Directory /www/data/>
SetOutputFilter INCLUDES
</Directory>

如果設(shè)置了多于一個(gè)過(guò)濾器,它們必須按照處理內(nèi)容的順序用分號(hào)(;)分隔。

參見(jiàn)

top

TimeOut 指令

說(shuō)明服務(wù)器在斷定請(qǐng)求失敗前等待的秒數(shù)
語(yǔ)法TimeOut seconds
默認(rèn)值TimeOut 300
作用域server config
狀態(tài)核心(C)
模塊core

TimeOut指令用于設(shè)置Apache等待以下三種事件的時(shí)間長(zhǎng)度:

  1. 接受一個(gè)GET請(qǐng)求耗費(fèi)的總時(shí)間。
  2. POST或PUT請(qǐng)求時(shí),接受兩個(gè)TCP包之間的時(shí)間。
  3. 應(yīng)答時(shí)TCP包傳輸中兩個(gè)ACK包之間的時(shí)間。

我們計(jì)劃在發(fā)展里程中,逐步把它們分別變得更易配置。計(jì)時(shí)器在1.2版本之前的默認(rèn)值為1200,而現(xiàn)在已經(jīng)設(shè)置為300了,但對(duì)于絕大多數(shù)情況來(lái)說(shuō)仍是足夠的。沒(méi)有把它默認(rèn)值設(shè)的更小的原因在于代碼里還有點(diǎn)問(wèn)題:有時(shí)發(fā)送一個(gè)包之后,計(jì)時(shí)器沒(méi)有復(fù)位。

top

TraceEnable 指令

說(shuō)明確定如何處理TRACE請(qǐng)求
語(yǔ)法TraceEnable [on|off|extended]
默認(rèn)值TraceEnable on
作用域server config
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 1.3.34, 2.0.55 及以后的版本中可用

這個(gè)指令同時(shí)決定了核心和mod_proxy模塊如何處理TRACE請(qǐng)求。默認(rèn)(TraceEnable on)允許處理RFC2616定義的禁止附帶任何請(qǐng)求體的TRACE請(qǐng)求。TraceEnable off 則使核心和mod_proxy模塊向客戶端返回一個(gè)"405"(禁止的方法)錯(cuò)誤。

最后,為了測(cè)試和診斷,可以設(shè)置"TraceEnable extended"以允許附帶請(qǐng)求體。核心(原始服務(wù)器)將會(huì)將請(qǐng)求體大小限制為64k以下(如果使用了 Transfer-Encoding: chunked 頭,可以再為HTTP頭增加8k)。核心會(huì)同時(shí)限制應(yīng)答頭和應(yīng)答體;代理服務(wù)器則沒(méi)有對(duì)請(qǐng)求體加以64k的限制。

top

UseCanonicalName 指令

說(shuō)明配置服務(wù)器如何確定它自己的域名和端口
語(yǔ)法UseCanonicalName On|Off|DNS
默認(rèn)值UseCanonicalName Off
作用域server config, virtual host, directory
狀態(tài)核心(C)
模塊core

在很多情況下,Apache必須構(gòu)造一個(gè)自引用URL(即一個(gè)指回相同服務(wù)器的URL)。使用 UseCanonicalName On 會(huì)將ServerName這個(gè)域名用于所有自引用URL、SERVER_NAME、CGI中的SERVER_PORT 。

設(shè)置為 UseCanonicalName Off 時(shí),如果客戶端提供了主機(jī)名和端口(否則將如上所述使用標(biāo)準(zhǔn)域名),Apache將會(huì)使用這些信息來(lái)構(gòu)建自引用URL。這些值與用于實(shí)現(xiàn)基于域名的虛擬主機(jī)的值相同,并且對(duì)于同樣的客戶端可用。CGI變量SERVER_NAMESERVER_PORT也會(huì)由客戶端提供的值來(lái)構(gòu)建。

用這樣的方式成功解決問(wèn)題的例子如下:在一個(gè)局域網(wǎng)內(nèi),您想讓連接主機(jī)的用戶使用諸如www這樣的短域名進(jìn)行訪問(wèn)。您會(huì)注意到,如果用戶鍵入了類似http://www/splat這樣的短域名和目錄的URL,并且沒(méi)有最后的斜線,Apache會(huì)將他們重定向到http://www.domain.com/splat/。如果您在這個(gè)目錄上啟用了身份驗(yàn)證,這會(huì)導(dǎo)致用戶必須進(jìn)行兩次驗(yàn)證:一次針對(duì)www而另外一次針對(duì)www.domain.com(參見(jiàn)關(guān)于此主題的FAQ獲得更多信息)。但如果UseCanonicalName設(shè)為 Off ,Apache就會(huì)重定向到http://www/splat/。

第三個(gè)可選項(xiàng)是 UseCanonicalName DNS ,用于為大量基于IP的虛擬主機(jī)支持那些古董級(jí)的不提供"Host:"頭的瀏覽器使用。使用這個(gè)選項(xiàng)時(shí),Apache將對(duì)客戶端連入的服務(wù)器的IP地址進(jìn)行反向DNS查詢,以構(gòu)建自引用URL。

警告

如果CGI對(duì)SERVER_NAME的值作出了假定,它們會(huì)被此選項(xiàng)破壞。客戶端對(duì)于給出它們想要的主機(jī)名這樣的行動(dòng)是完全不受限制的。但如果CGI僅使用SERVER_NAME來(lái)構(gòu)建自引用的URL,它們會(huì)工作的很好。

參見(jiàn)

top

UseCanonicalPhysicalPort 指令

說(shuō)明配置服務(wù)器如何確定自己的名字和端口
語(yǔ)法UseCanonicalPhysicalPort On|Off
默認(rèn)值UseCanonicalPhysicalPort Off
作用域server config, virtual host, directory
狀態(tài)核心(C)
模塊core
兼容性僅在 Apache 2.2.0 及以后的版本中可用

在很多情況下,Apache必須構(gòu)造一個(gè)自引用URL(即一個(gè)指回相同服務(wù)器的URL)。在 UseCanonicalPhysicalPort On 的時(shí)候,Apache將有可能在構(gòu)造服務(wù)器的規(guī)范端口時(shí)為了符合UseCanonicalName指令而使用實(shí)際的物理端口號(hào)(physical port)。在 UseCanonicalPhysicalPort Off 的時(shí)候,Apache將不會(huì)使用實(shí)際的物理端口號(hào),而是依賴所有已經(jīng)配置的信息來(lái)構(gòu)造一個(gè)合法的端口號(hào)。

注意

決定使用物理端口號(hào)的次序如下:

UseCanonicalName On

  • Servername指定的端口號(hào)
  • 物理端口號(hào)
  • 默認(rèn)端口號(hào)
UseCanonicalName Off | DNS
  • "Host:"請(qǐng)求頭提供的端口號(hào)
  • 物理端口號(hào)
  • Servername指定的端口號(hào)
  • 默認(rèn)端口號(hào)

UseCanonicalPhysicalPort Off 的情況下,物理端口號(hào)將會(huì)從上述順序中剔除。

參見(jiàn)

top

<VirtualHost> 指令

說(shuō)明包含僅作用于指定主機(jī)名或IP地址的指令
語(yǔ)法<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
作用域server config
狀態(tài)核心(C)
模塊core

<VirtualHost></VirtualHost>用于封裝一組僅作用于特定虛擬主機(jī)的指令。任何在虛擬主機(jī)配置中可以使用的指令也同樣可以在這里使用。當(dāng)服務(wù)器接受了一個(gè)特定虛擬主機(jī)的文檔請(qǐng)求時(shí),它會(huì)使用封裝在<VirtualHost>配置段中的指令。Addr可以是:

示例

<VirtualHost 10.1.2.3>
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
</VirtualHost>

IPv6的地址必須放入方括號(hào)中指定,否則作為可選項(xiàng)的端口號(hào)將無(wú)法確定。一個(gè)IPv6的示例如下:

<VirtualHost [2001:db8::a00:20ff:fea7:ccea]>
ServerAdmin webmaster@host.example.com
DocumentRoot /www/docs/host.example.com
ServerName host.example.com
ErrorLog logs/host.example.com-error_log
TransferLog logs/host.example.com-access_log
</VirtualHost>

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

注意

<VirtualHost>的使用并不影響Apache的監(jiān)聽(tīng)地址。你需要使用Listen來(lái)確保Apache正在監(jiān)聽(tīng)正確的地址。

當(dāng)使用基于IP的虛擬主機(jī)時(shí),特殊的名稱"_default_"可以在沒(méi)有匹配到其它列出的虛擬主機(jī)的情況下作為匹配任何IP地址的默認(rèn)虛擬主機(jī)。在沒(méi)有進(jìn)行"_default_"虛擬主機(jī)的設(shè)定時(shí),在沒(méi)有IP與請(qǐng)求匹配的情況下,將使用"主服務(wù)器"(在所有虛擬主機(jī)配置段之外)的配置。但請(qǐng)注意:任何匹配NameVirtualHost指令的IP地址既不會(huì)使用"主服務(wù)器"配置,也不會(huì)使用"_default_"虛擬主機(jī)的配置。參見(jiàn)基于域名的虛擬主機(jī)文檔。

您可以指定一個(gè)":port"來(lái)改變匹配的端口。如果沒(méi)有指定,它將沿用主服務(wù)器中離它最近的那個(gè)Listen指定的值。您也可以指定":*"來(lái)匹配那個(gè)地址上的所有端口(當(dāng)您使用"_default_"時(shí),這是推薦采用的方法)。

安全

參見(jiàn)安全提示文檔以獲得為什么當(dāng)您存儲(chǔ)日志文件的目錄對(duì)于啟動(dòng)服務(wù)器以外的用戶來(lái)說(shuō)是可寫(xiě)的會(huì)危及服務(wù)器安全的詳細(xì)資料。

參見(jiàn)

乌海市| 娄底市| 楚雄市| 白城市| 紫云| 新沂市| 康马县| 武陟县| 鹿泉市| 湘乡市| 佳木斯市| 响水县| 武陟县| 富宁县| 永济市| 东乌珠穆沁旗| 三亚市| 武功县| 新竹市| 新化县| 汉川市| 柯坪县| 黔西| 济源市| 内乡县| 平遥县| 望谟县| 左权县| 布拖县| 凉城县| 浪卡子县| 邯郸县| 阳春市| 元江| 昌邑市| 宁都县| 陇西县| 鹤壁市| 仲巴县| 门源| 托克逊县|