本文將描述用於組態Apache HTTP伺服器的檔案。
通過將指令放在純文字組態檔案中來組態Apache。主組態檔案通常是一個名稱為:httpd.conf
的文字檔案。此檔案的位置在編譯時設定,但可以使用-f
命令列標誌覆蓋。此外,可以使用Include
指令新增其他組態檔案,並且可以使用萬用字元包含許多組態檔案。任何指令都可以放在任何這些組態檔案中。只有Apache在啟動或重新啟動時才能識別對主組態檔案的更改。
伺服器還讀取包含mime
文件型別的檔案; 檔案名由TypesConfig
指令設定,預設為mime.types
。
Apache組態檔案每行包含一個指令。反斜槓\
可以用作一行的最後一個字元,表示該指令繼續到下一行。反斜槓和行尾之間不能有其他字元或空格。
組態檔案中的指令不區分大小寫,但指令的引數通常區分大小寫。以井號#
開頭的行被視為註釋,並被忽略。注釋可能不會與組態指令包含在同一行中。忽略指令之前出現的空格,因此為了清楚起見,您可以縮排指令。空行也被忽略。
可以使用語法${ENVVAR}
在組態檔案行中使用shell環境變數的值。如果「ENVVAR」是有效環境變數的名稱,則該變數的值將替換為組態檔案行中的該位置,並繼續處理,就好像該文字直接在組態檔案中找到一樣。(如果未找到ENVVAR變數,則字元${ENVVAR}
保持不變,以供組態檔案處理中的後續階段使用。)
在環境變數替換之後,連線任何連續行並刪除前導和尾隨空格的組態檔案中的行的最大長度為8192
個字元。
可以使用apachectl configtest
或-t
命令列選項檢查組態檔案中的語法錯誤,而無需啟動伺服器。
Apache是一個模組化伺服器。這意味著核心伺服器中只包含最基本的功能。可以通過可以載入到Apache的模組獲得擴充套件功能。預設情況下,伺服器在編譯時包含一組基本模組。如果伺服器編譯為使用動態載入的模組,則可以單獨編譯模組,並使用LoadModule
指令隨時新增模組。否則,必須重新編譯Apache以新增或刪除模組。組態指令可以通過將它們封裝在<IfModule>
塊中而以包含特定模組的條件為條件。
要檢視當前編譯到伺服器中的模組,可以使用-l
命令列選項。
放置在主組態檔案中的指令適用於整個伺服器。如果您只想更改伺服器的一部分組態,可以將指令放在<Directory>
,<DirectoryMatch>
,<Files>
,<FilesMatch>
,<Location>
和<LocationMatch>
部分中。這些部分限制了它們包含在特定檔案系統位置或URL中的指令的應用。它們也可以巢狀,允許非常精細的粒度組態。
Apache可以同時為許多不同的網站提供服務。這稱為虛擬主機。指令也可以通過將它們放在<VirtualHost>
部分中來限定範圍,以便它們僅適用於特定網站的請求。
儘管大多數指令可以放在這些部分中的任何部分中,但某些指令在某些情況下沒有意義。例如,控制進程建立的指令只能放在主伺服器上下文中。要查詢哪些指令可以放在哪些部分中,請檢查指令的上下文。
Apache允許通過放置在Web樹中的特殊檔案來分散管理組態。特殊檔案通常稱為.htaccess
,但可以在AccessFileName
指令中指定任何名稱。放置在.htaccess
檔案中的指令適用於放置檔案的目錄和所有子目錄。.htaccess
檔案遵循與主組態檔案相同的語法。由於每次請求都會讀取.htaccess
檔案,因此對這些.htaccess
檔案所做的更改會立即生效。
要查詢可以放在.htaccess
檔案中的指令,請檢查指令的上下文。伺服器管理員通過在主組態檔案中組態AllowOverride
指令,進一步控制可以在.htaccess
檔案中放置哪些指令。