Apache模塊 core

Apache模塊 core

說明: Apache HTTP 服務器提供的核心功能
狀態: 核心
top

AcceptPathInfo 指令

說明: 接受附加路徑名信息
語法: AcceptPathInfo On|Off|Default
默認值: AcceptPathInfo Default
上下文: 服務器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: FileInfo
狀態: 核心
模塊: core
兼容性: Apache 2.0.30或更新版本

此指令決定了是否接受包含在某確定文件(或是某現有目錄的一個不存在的文件)後附加的路徑信息。此路徑信息將在腳本里以PATH_INFO環境變量的形式出現。

比如說,假設/test/所指向的目錄下只包括一個文件:here.html。那麼對/test/here.html/more/test/nothere.html/more的請求都會得到/more這樣的PATH_INFO變量。

AcceptPathInfo指令的三個參數爲:

off
僅當一個請求映射到一個真實存在的路徑時,它纔會被接受。這樣,如上述/test/here.html/more這樣的在真實文件名後跟隨一個路徑名的請求將會返回一個404 NOT FOUND錯誤。
on
如果前面的路徑映射到一個真實存在的文件,此請求將被接受。如果/test/here.html映射着一個有效的文件,上例中/test/here.html/more這個請求就會被接受。
default
對於附加路徑名的請求的處理方式由其對應的處理器來決定。對應普通文本的核心處理器默認會拒絕PATH_INFO。而用於伺服腳本的處理器,比如cgi-scriptisapi-isa,默認會接受PATH_INFO。

AcceptPathInfo指令存在的首要目的就是允許您覆蓋處理器關於是否接受PATH_INFO的默認設置。這種覆蓋是很必要的。比如說,當您使用了類似INCLUDES這樣的過濾器來根據PATH_INFO產生內容時。核心處理器通常會拒絕這樣的請求,而您就可以用下述的配置使這樣的腳本成爲可能:

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

top

AccessFileName 指令

說明: 發佈配置文件名
語法: AccessFileName 文件名 [文件名] ...
默認值: AccessFileName .htaccess
上下文: 服務器配置, 虛擬主機
狀態: 核心
模塊: core

當向客戶端返回文檔時,如果設置了此目錄的發佈配置文件功能。服務器將在這個文檔的各個路徑中從名字列表中查找第一個存在的配置文件。比如說:

AccessFileName .acl

在返回文檔/usr/local/web/index.html之前,服務器會爲此指令讀取/.acl/usr/.acl/usr/local/.acl/usr/local/web/.acl除非此功能以爲如下代碼所禁用

<Directory />
  AllowOverride None
</Directory>

參見

top

AddDefaultCharset 指令

說明: 在沒有進行指定字符集的情況下向迴應中加入的默認字符集
語法: AddDefaultCharset On|Off|字符集
默認值: AddDefaultCharset Off
上下文: 服務器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: FileInfo
狀態: 核心
模塊: core

當迴應信息中沒有在HTTP頭中沒有包含任何關於內容類型的參數時,此指令將會指定一個字符集的名字並添加進去。這將覆蓋在文檔體中通過META標籤指定的字符集。AddDefaultCharset Off這樣的設置將會禁用此功能。AddDefaultCharset On將根據此指令的需要啓用Apache內部的默認字符集——iso-8859-1。您也可以指定使用另外一個字符集。 比如說:

AddDefaultCharset utf-8

top

AddOutputFilterByType 指令

說明: 對特定的MIME類型指定輸出過濾器
語法: AddOutputFilterByType 過濾器[;過濾器...] MIME類型 [MIME類型] ...
上下文: 服務器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: FileInfo
狀態: 核心
模塊: core
兼容性: 存在於Apache 2.0.33及後繼版本

此指令根據迴應的MIME類型對請求激活了特定的輸出過濾器

下例使用了由mod_deflate提供的DEFLATE過濾器。它將把所有以text/htmltext/plain爲標記的輸出(不論靜態或動態)在發送到客戶端之前進行壓縮。

AddOutputFilterByType DEFLATE text/html text/plain

如果您希望用不只一個過濾器來對內容進行處理,您可以用分號來分隔它們的名字。並對每個過濾器使用AddOutputFilterByType指令。

下述配置將使所有標記爲text/html的腳本輸出首先被INCLUDES過濾器處理然後被DEFLATE過濾器處理。

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

Note

在某些情況下,用AddOutputFilterByType來使用過濾器會遭受部分或完全的失敗。比如說,如果MIME類型不能確定,那麼將不會有過濾器加於其上,從而使之回落到DefaultType的設置。甚至當DefaultType與其相同的時候也是這樣。

然而,如果您想確認對某些資源相關的內容類型使用了過濾器,您可以使用用諸如AddTypeForceType這樣的辦法。在一個(non-nph)CGI腳本中設定內容類型也很妥當。

由類型決定的輸出過濾器永遠不會施用於來自代理的請求。

參見

top

AllowOverride 指令

說明: 允許存在於.htaccess文件中的指令類型
語法: AllowOverride All|None|指令類型 [指令類型] ...
默認值: AllowOverride All
上下文: 目錄
狀態: 核心
模塊: core

當服務器發現了一個.htaccess文件(由AccessFileName指定)時,它需要知道在這個文件中聲明的哪些指令能覆蓋在此之前指定的訪問信息。

僅存在於<Directory>小節

AllowOverride僅在<Directory>小節中才是有效的。在<Location><Files>小節中都是無效的。

如果此指令設置爲None,那麼.htaccess文件將被完全忽略。在這種情況下,服務器甚至都不會試着從文件系統讀取.htaccess文件。

當此指令設置爲All時,所有具有.htaccess 上下文的指令都允許出現在.htaccess文件中。

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

AuthConfig
允許使用鑑權指令(AuthDBMGroupFileAuthDBMUserFileAuthGroupFileAuthNameAuthTypeAuthUserFileRequire)。
FileInfo
允許使用控制文檔類型指令(DefaultTypeErrorDocumentForceTypeLanguagePrioritySetHandlerSetInputFilterSetOutputFilter,和mod_mime中的Add*和Remove*指令)。
Indexes
允許使用目錄索引指令(AddDescriptionAddIconAddIconByEncodingAddIconByTypeDefaultIconDirectoryIndexFancyIndexingHeaderNameIndexIgnoreIndexOptionsReadmeName)。
Limit
允許使用主機訪問控制指令(AllowDenyOrder)。
Options
允許使用控制指定目錄功能指令(OptionsXBitHack)。

例如:

AllowOverride AuthConfig Indexes

參見

top

AuthName 指令

說明: 用於HTTP認證的的驗證域
語法: AuthName auth-domain
上下文: 目錄, .htaccess
覆蓋項: AuthConfig
狀態: 核心
模塊: core

此指令爲目錄的驗證域設置了名字。此域將發送給客戶端以使用戶瞭解應當發送哪個用戶名和密碼。AuthName指令帶有一個參數。如果域的名字中包含空格,它必須用引號引起來。它必須與AuthTypeRequire指令以及諸如AuthUserFileAuthGroupFile這樣的指令一起工作。

舉例如下:

AuthName "Top Secret"

提供給AuthName的字符串將出現在大多數瀏覽器提供的密碼對話框中。

參見

top

AuthType 指令

說明: 用戶驗證的類型
語法: AuthType Basic|Digest
上下文: 目錄, .htaccess
覆蓋項: AuthConfig
狀態: 核心
模塊: core

此指令選擇了一個目錄的用戶驗證的類型。目前只實現了BasicDigest。 它必須和AuthNameRequire指令以及諸如AuthUserFileAuthGroupFile這樣的指令一起使用。

參見

top

CGIMapExtension 指令

說明: 定位CGI腳本解釋器的技術
語法: CGIMapExtension cgi-path .extension
默認值: None
上下文: 目錄, .htaccess
覆蓋項: FileInfo
狀態: 核心
模塊: core
兼容性: 僅適用於NetWare

此指令用於控制Apache發現CGI腳本的解釋器。比如說CGIMapExtension sys:\foo.nlm .foo這樣的設置將把所有具有.foo擴展名的CGI腳本文件傳遞給FOO解釋器。

top

ContentDigest 指令

說明: 啓用HTTP迴應頭的Content-MD5的產生
語法: ContentDigest on|off
默認值: ContentDigest off
上下文: 服務器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: Options
狀態: 核心
模塊: core

此指令遵照RFC1854和RFC2068協議定義啓用了Content-MD5的生成。

MD5是一種爲不定長度(arbitrary-length)的數據計算出一個“消息摘要”(有時也稱爲“指紋”)的算法。並且保證數據中的任何變化都會反應在message digest的變化當中。

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

Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==

請注意,因爲對於每個請求(沒有對其值進行緩存)都要進行消息摘要的運算所以這會對您的服務器造成性能方面的問題。

Content-MD5僅爲由核心伺服的文檔進行發送,而對於模塊將不予理會。比如說SSI文檔,CGI腳本的輸出和字節範圍的迴應都不包括這個頭。

top

DefaultType 指令

說明: 在服務器無法由其他方法確定類型時,發送的默認MIME內容類型。
語法: DefaultType MIME類型
默認值: DefaultType text/plain
上下文: 服務器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: FileInfo
狀態: 核心
模塊: core

有時會發生這樣的事:服務器會被要求提供一個文檔,而這個文檔的類型無法由它的MIME類型映射所決定。

服務器必須通知客戶端其文檔的內容類型。所以當一個未知類型出現時,將會使用DefaultType。比如說:

DefaultType image/gif

這樣的配置對於裏面有很多gif圖片而有些在文件名中缺少.gif擴展名的目錄非常合適。

注意:與ForceType指令的不同之處在於:此指令僅提供了默認的mime類型。所有其它mime類型的定義,包括文件的擴展名,或那些可以標識一種媒體類型的都會覆蓋此默認值。

top

<Directory> 指令

說明: 封裝一組指令,使之僅對具有某個名字的文件系統目錄及其子目錄起作用。
語法: <Directory 目錄路徑> ... </Directory>
上下文: 服務器配置, 虛擬主機
狀態: 核心
模塊: core

<Directory></Directory>用於封裝一組指令,使之僅對某個目錄及其子目錄生效。任何在目錄上下文中可以使用的指令都允許在這種情況下使用。Directory-path可以爲一個目錄的完整路徑,抑或是包含了Unix外殼匹配語法的通配符字串。在通配符字串中,“?”匹配任何單個的字符,“*”匹配任何字符序列。您也可以使用“[]”來確定字符範圍。以上通配符都不能匹配“/”字符。所以<Directory /*/public_html>將無法匹配/home/user/public_html,但<Directory /home/*/public_html>能夠正確匹配。比如說:

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

在使用directory-path參數的時候要注意:它們必須與Apache用於訪問文件的文件系統路徑保持一致。賦予特定<Directory>的指令將無法對通過不同路徑指向的同一個目錄文件生效,比如說通過另外一個符號連接生成的路徑。

擴展的正則表達式也可以通過附加一個~字符來使用。比如說:

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

將匹配/www/下的所有由3個數字組成的目錄。

如果有多個(非正則表達式)directory配置段符合包含某文檔的目錄(或其父目錄),那麼指令將以最短目錄最先應用的規則進行應用。並雜以.htaccess文件中的指令。比如說在

<Directory />
  AllowOverride None
</Directory>

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

中,訪問文檔/home/web/dir/doc.html的步驟如下:

  • 應用指令AllowOverride None(禁用.htaccess文件)。
  • 應用指令AllowOverride FileInfo(針對目錄/home/web)。
  • 應用所有/home/web/.htaccess中的FileInfo指令

正則表達式將在所有普通配置段應用後才予以考慮。所有的正則表達式將根據它們出現在配置文件中的順序進行驗證。比如說,以下配置:

<Directory ~ abc$>
... directives here ...
</Directory>

正則表達式配置段將在所有普通的<Directory>和.htaccess文件應用後才予以考慮。所以正則表達式將匹配/home/abc/public_html/abc並予以應用。

請注意:Apache對<Directory />的默認訪問權限爲Allow from All。這意味着Apache將伺服任何通過URL映射的文件。我們建議您將這個配置做如下屏蔽:

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

然後在您想要使之被訪問的目錄中覆蓋此配置。參閱安全提示頁獲取更多詳情。

一般來說,directory小節會出現在access.conf文件中,但它們也可能出現在任何配置文件中。<Directory>指令不可被嵌套使用,也不能出現在<Limit><LimitExcept>小節中。

參見

top

<DirectoryMatch> 指令

說明: 封裝一些指令並施用於文件系統中符合一個正則表達式的目錄及其子目錄
語法: <DirectoryMatch regex> ... </Directory>
上下文: 服務器配置, 虛擬主機
狀態: 核心
模塊: core

<DirectoryMatch></DirectoryMatch>用於封裝一組指令。與<Directory>類似,此組指令將僅施用於指定名字的目錄及其子目錄。然而,它可以接受一個正則表達式作爲參數。比如說:

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

將匹配/www/下所有由3個數字組成的目錄。

參見

top

DocumentRoot 指令

說明: 組成網絡上可以觀看的主文檔樹的目錄
語法: DocumentRoot 目錄路徑
默認值: DocumentRoot /usr/local/apache/htdocs
上下文: 服務器配置, 虛擬主機
狀態: 核心
模塊: core

此指令設置了httpd來伺服的目錄。在沒有使用類似Alias這樣的指令的情況下,服務器會將請求中的URL附加到document root後面以構成指向文檔的路徑。比如說:

DocumentRoot /usr/web

於是對於http://www.my.host.com/index.html的訪問就會指向/usr/web/index.html

指定DocumentRoot時不應包括最後的“/”。

參見

top

EnableMMAP 指令

說明: 在分發中使用內存映射(memory-mapping)來讀取文件
語法: EnableMMAP on|off
默認值: EnableMMAP on
上下文: 服務器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: FileInfo
狀態: 核心
模塊: core

此指令控制着httpd在分發中如果需要讀取一個文件的內容,它是否可以使用內存映射。當處理一個需要訪問在一個文件中的數據的請求時,比如說當分發一個使用mod_include指令進行服務器端分析的文件時,如果操作系統支持,Apache將默認使用內存映射。

這種內存映射有時會帶來性能的提高,但在某些情況下,您可能會需要禁用內存映射以避免一些操作系統的問題:

  • 在一些多處理器的系統上,內存映射會減低一些httpd的性能。
  • 在一個加載了NFS的DocumentRoot上,當httpd已經將一個文件進行了內存映射的情況下,刪除或截斷了這個文件會造成httpd因爲堆棧溢出而崩潰。

在可能遇到這些問題的服務器配置過程中,您應當使用下面這樣的命令來禁用內存映射:

EnableMMAP off

top
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章