Apache2 httpd.conf 配置详解(一)
常用配置指令說明
- ServerRoot:服務(wù)器的基礎(chǔ)目錄,一般來(lái)說它將包含conf/和logs/子目錄,其它配置文件的相對(duì)路徑即基于此目錄。默認(rèn)為安裝目錄,不需更改。
語(yǔ)法:ServerRoot directory-path
如:ServerRoot "/usr/local/apache-2.2.6"
注意,此指令中的路徑最后不要加 / 。 - Listen:指定服務(wù)器監(jiān)聽的IP和端口。默認(rèn)情況下Apache會(huì)在所有IP地址上監(jiān)聽。Listen是Apache2.0以后版本必須設(shè)置的指令,如果在配置文件中找不到這個(gè)指令,服務(wù)器將無(wú)法啟動(dòng)。
語(yǔ)法:Listen [IP-address:]portnumber [protocol]
Listen指令指定服務(wù)器在那個(gè)端口或地址和端口的組合上監(jiān)聽接入請(qǐng)求。如果只指定一個(gè)端口,服務(wù)器將在所有地址上監(jiān)聽該端口。如果指定了地址和端口的組合,服務(wù)器將在指定地址的指定端口上監(jiān)聽。可選的protocol參數(shù)在大多數(shù)情況下并不需要,若未指定該參數(shù),則將為443端口使用默認(rèn)的https 協(xié)議,為其它端口使用http協(xié)議。
使用多個(gè)Listen指令可以指定多個(gè)不同的監(jiān)聽端口和/或地址端口組合。
默認(rèn)為:Listen 80
如果讓服務(wù)器接受80和8080端口上請(qǐng)求,可以這樣設(shè)置:
Listen 80
Listen 8080
如果讓服務(wù)器在兩個(gè)確定的地址端口組合上接受請(qǐng)求,可以這樣設(shè)置:
Listen 192.168.2.1:80
Listen 192.168.2.2:8080
如果使用IPV6地址,必須用方括號(hào)把IPV6地址括起來(lái):
Listen [2001:db8::a00:20ff:fea7:ccea]:80 - LoadModule:加載特定的DSO模塊。Apache默認(rèn)將已編譯的DSO模塊存放于4.1目錄結(jié)構(gòu)小節(jié)中所示的動(dòng)態(tài)加載模塊目錄中。
語(yǔ)法:LoadModule module filename
如:LoadModule rewrite_module modules/mod_rewrite.so
如果filename使用相對(duì)路徑,則路徑是相對(duì)于ServerRoot所指示的相對(duì)路徑。
Apache配置文件默認(rèn)加載所有已編譯的DSO模塊,筆者建議只加載如下模塊:authn_file、authn_default、 authz_host、authz_user、authz_default、auth_basic、dir、alias、filter、speling、 log_config、env、vhost_alias、setenvif、mime、negotiation、rewrite、deflate、 expires、headers、cache、file-cache、disk-cache、mem-cache。 - User:設(shè)置實(shí)際提供服務(wù)的子進(jìn)程的用戶。為了使用這個(gè)指令,服務(wù)器必須以root身份啟動(dòng)和初始化。如果你以非root身份啟動(dòng)服務(wù)器,子進(jìn)程將不能夠切換至非特權(quán)用戶,并繼續(xù)以啟動(dòng)服務(wù)器的原始用戶身份運(yùn)行。如果確實(shí)以root用戶啟動(dòng)了服務(wù)器,那么父進(jìn)程將仍然以root身份運(yùn)行。用于運(yùn)行子進(jìn)程的用戶必須是一個(gè)沒有特權(quán)的用戶,這樣才能保證子進(jìn)程無(wú)權(quán)訪問那些不想為外界所知的文件,同樣的,該用戶亦需沒有執(zhí)行那些不應(yīng)當(dāng)被外界執(zhí)行的程序的權(quán)限。強(qiáng)烈建議專門為Apache子進(jìn)程建立一個(gè)單獨(dú)的用戶和組。一些管理員使用nobody用戶,但是這并不能總是符合要求,因?yàn)榭赡苡衅渌绦蛞苍谑褂眠@個(gè)用戶。
例:User daemon - Group:設(shè)置提供服務(wù)的Apache子進(jìn)程運(yùn)行時(shí)的用戶組。為了使用這個(gè)指令,Apache必須以root初始化啟動(dòng),否則在切換用戶組時(shí)會(huì)失敗,并繼續(xù)以初始化啟動(dòng)時(shí)的用戶組運(yùn)行。
例:Group daemon - ServerAdmin:設(shè)置在所有返回給客戶端的錯(cuò)誤信息中包含的管理員郵件地址。
語(yǔ)法:ServerAdmin email-address|URL
如果httpd不能將提供的參數(shù)識(shí)別為URL,它就會(huì)假定它是一個(gè)email-address ,并在超連接中用在mailto:后面。推薦使用一個(gè)Email地址,因?yàn)樵S多CGI腳本是這樣認(rèn)為的。如果你確實(shí)想使用URL,一定要保證指向一個(gè)你能夠控制的服務(wù)器,否則用戶將無(wú)法確保一定可以和你取得聯(lián)系。 - ServerName:設(shè)置服務(wù)器用于辨識(shí)自己的主機(jī)名和端口號(hào)。
語(yǔ)法:ServerName [scheme://]fully-qualified-domain-name[:port]
可選的'scheme://'前綴僅在2.2.3以后的版本中可用,用于在代理之后或離線設(shè)備上也能正確的檢測(cè)規(guī)范化的服務(wù)器URL。
當(dāng)沒有指定ServerName時(shí),服務(wù)器會(huì)嘗試對(duì)IP地址進(jìn)行反向查詢來(lái)推斷主機(jī)名。如果在ServerName中沒有指定端口號(hào),服務(wù)器會(huì)使用接受請(qǐng)求的那個(gè)端口。
為了加強(qiáng)可靠性和可預(yù)測(cè)性,建議使用ServerName顯式的指定一個(gè)主機(jī)名和端口號(hào)。
如果使用的是基于域名的虛擬主機(jī),在段中的ServerName將是為了匹配這個(gè)虛擬主機(jī),在"Host:"請(qǐng)求頭中必須出現(xiàn)的主機(jī)名。 - DocumentRoot:設(shè)置Web文檔根目錄。
語(yǔ)法:DocumentRoot directory-path
在沒有使用類似Alias這樣的指令的情況下,服務(wù)器會(huì)將請(qǐng)求中的URL附加到DocumentRoot后面以構(gòu)成指向文檔的路徑。
如果directory-path不是絕對(duì)路徑,則被假定為是相對(duì)于ServerRoot的路徑。
指定DocumentRoot時(shí)不應(yīng)包括最后的"/"。 - :和用于封裝一組指令,使之僅對(duì)某個(gè)目錄及其子目錄生效。
語(yǔ)法: ...
Directory-path可以是一個(gè)目錄的完整路徑,或是包含了Unix shell匹配語(yǔ)法的通配符字符串。在通配符字符串中,"?"匹配任何單個(gè)的字符,"*"匹配任何字符序列。也可以使
用"[]"來(lái)確定字符范圍。在"~" 字符之后也可以使用正則表達(dá)式。
如果有多個(gè)(非正則表達(dá)式)配置段符合包含某文檔的目錄(或其父目錄),那么指令將以短目錄優(yōu)先的規(guī)則進(jìn)行應(yīng)用,并包含.htaccess文件中的指令。
正則表達(dá)式將在所有普通配置段之后予以考慮。所有的正則表達(dá)式將根據(jù)它們出現(xiàn)在配置文件中的順序進(jìn)行應(yīng)用。
指令不可被嵌套使用,也不能出現(xiàn)在或配置段中。 :提供基于文件名的訪問控制,類似于和指令。
語(yǔ)法: ...
filename參數(shù)應(yīng)當(dāng)是一個(gè)文件名或是一個(gè)包含通配符的字符串,其中"?"匹配任何單個(gè)字符,"*"匹配任何字符串序列。在"~"字符之后可以使用正則表達(dá)式。
在此配置段中定義的指令將作用于其基本名稱(不是完整的路徑)與指定的文件名相符的對(duì)象。段將根據(jù)它們?cè)谂渲梦募谐霈F(xiàn)的順序被處理:在段和.htaccess
文件被處理之后,但在段之前。能嵌入到段中以限制它們作用的文件系統(tǒng)范圍,也可用于.htaccess文件當(dāng)中,以允許用戶在文件層面上控制對(duì)它們自己文件的訪問。- :封裝根據(jù)指定的模塊是否啟用而決定是否生效的指令。
語(yǔ)法:<IfModule [!]module-file|module-identifier> ...
module-file是指編譯模塊時(shí)的文件名,比如mod_rewrite.c 。
module-identifier是指模塊的標(biāo)識(shí)符,比如mod_rewrite 。
在配置段中的指令僅當(dāng)測(cè)試結(jié)果為真的時(shí)候才進(jìn)行處理,否則所有其間的指令都將被忽略。 - Options:控制在特定目錄中將使用哪些服務(wù)器特性
語(yǔ)法:Options [+|-]option [[+|-]option] ...
option可以為None,不啟用任何額外特性,或者下面選項(xiàng)中 的一個(gè)或多個(gè):
All除MultiViews之外的所有特性,這是默認(rèn)設(shè)置。
ExecCGI允許使用mod_cgi執(zhí)行CGI腳本。
FollowSymLinks服務(wù)器允許在此目錄中使用符號(hào)連接,如果此配置位于配置段中,則會(huì)被忽略。
Includes允許使用mod_include提供的服務(wù)器端包含。
IncludesNOEXEC允許服務(wù)器端包含,但禁用"#exec cmd"和"#exec cgi",但仍可以從ScriptAlias目錄使用"#include virtual"虛擬CGI腳本。
Indexes如果一個(gè)映射到目錄的URL被請(qǐng)求,而此目錄中又沒有DirectoryIndex(例如:index.html),那么服務(wù)器會(huì)返回由mod_autoindex生成的一個(gè)格式化后的目錄列表。
MultiViews允許使用mod_negotiation提供內(nèi)容協(xié)商的"多重視圖"(MultiViews)。
SymLinksIfOwnerMatch服務(wù)器僅在符號(hào)連接與其目的目錄或文件的擁有者具有相同的uid時(shí)才使用它。如果此配置出現(xiàn)在配置段中,則將被忽略。
一般來(lái)說,如果一個(gè)目錄被多次設(shè)置了Options,則最特殊的一個(gè)會(huì)被完全接受(其它的被忽略),而各個(gè)可選項(xiàng)的設(shè)定彼此并不融合。然而,如果所有作用于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è)置中去除。 AllowOverride:確定允許存在于.htaccess文件中的指令類型。
Allow:控制哪些主機(jī)可以訪問服務(wù)器的該區(qū)域。可以根據(jù)主機(jī)名、IP地址、 IP地址范圍或其他環(huán)境變量中捕獲的客戶端請(qǐng)求特性進(jìn)行控制。
語(yǔ)法:AllowOverride All|None|directive-type [directive-type] ...
如果此指令被設(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)的指令
FileInfo允許使用控制文檔類型的指令、控制文檔元數(shù)據(jù)的指令、mod_rewrite中的指令、mod_actions中的Action指令
Indexes允許使用控制目錄索引的指令
Limit允許使用控制主機(jī)訪問的指令
Options[=Option,...]允許使用控制指定目錄功能的指令(Options和XBitHack)。可以在等號(hào)后面附加一個(gè)逗號(hào)分隔的(無(wú)空格的)Options選項(xiàng)列表,用來(lái)控制允許Options指令使用哪些選項(xiàng)。
AllowOverride僅在不包含正則表達(dá)式的配置段中才是有效的。在, , 配置段中都是無(wú)效的。
Order:控制默認(rèn)的訪問狀態(tài)與Allow和Deny指令生效的順序。
Ordering取值范圍是以下幾種范例之一:
Deny,AllowDeny指令在Allow指令之前被評(píng)估。默認(rèn)允許所有訪問。任何不匹配Deny指令或者匹配Allow指令的客戶都被允許訪問。
Allow,DenyAllow指令在Deny指令之前被評(píng)估。默認(rèn)拒絕所有訪問。任何不匹配Allow指令或者匹配Deny指令的客戶都將被禁止訪問。
Mutual-failure只有出現(xiàn)在Allow列表并且不出現(xiàn)在Deny列表中的主機(jī)才被允許訪問。這種順序與"Order Allow,Deny"具有同樣效果,不贊成使用。
關(guān)鍵字只能用逗號(hào)分隔,它們之間不能有空格,在所有情況下每個(gè)Allow和Deny指令語(yǔ)句都將被評(píng)估。
語(yǔ)法:Allow from all|host|env=env-variable [host|env=env-variable] ...
這個(gè)指令的第一個(gè)參數(shù)總是"from",隨后的參數(shù)可以有三種不同形式:如果指定"Allow from all",則允許所有主機(jī)訪問,按照下述Deny和Order指令的配置;若要只允許特定的主機(jī)或主機(jī)群訪問服務(wù)器,host可以用下面任何一種格式來(lái)指定:一個(gè)(部分)域名、完整的IP地址、部分IP地址、網(wǎng)絡(luò)/掩碼、網(wǎng)絡(luò)/nnn無(wú)類別域間路由規(guī)格;第三種參數(shù)格式允許對(duì)服務(wù)器的訪問由環(huán)境變量的一個(gè)擴(kuò)展指定,指定"Allow from env=env-variable"時(shí),如果環(huán)境變量env-variable存在則訪問被允許,使用由mod_setenvif提供的指令,服務(wù)器用一種基于客戶端請(qǐng)求的彈性方式提供了設(shè)置環(huán)境變量的能力。因此,這條指令可以用于允許基于像User-Agent(瀏覽器類型)、Referer或其他HTTP請(qǐng)求頭字段的訪問。
Deny:控制哪些主機(jī)被禁止訪問服務(wù)器的該區(qū)域。可以根據(jù)主機(jī)名、IP地址、 IP地址范圍或其他環(huán)境變量中捕獲的客戶端請(qǐng)求特性進(jìn)行控制。
語(yǔ)法:Deny from all|host|env=env-variable [host|env=env-variable] ...
此指令的參數(shù)設(shè)置和Allow指令完全相同。- DirectoryIndex:當(dāng)客戶端請(qǐng)求一個(gè)目錄時(shí)尋找的資源列表。
語(yǔ)法:DirectoryIndex Local-url [Local-url] ...
Local-url(%已解碼的)是一個(gè)相對(duì)于被請(qǐng)求目錄的文檔的URL(通常是那個(gè)目錄中的一個(gè)文件)。可以指定多個(gè)URL,服務(wù)器將返回最先找到的那一個(gè),比如:
DirectoryIndex index.html index.php - ErrorLog:指定當(dāng)服務(wù)器遇到錯(cuò)誤時(shí)記錄錯(cuò)誤日志的文件。
語(yǔ)法:ErrorLog file-path|syslog[:facility]
如果file-path不是一個(gè)以斜杠(/)開頭的絕對(duì)路徑,那么將被認(rèn)為是一個(gè)相對(duì)于ServerRoot的相對(duì)路徑;如果file-path以一個(gè)管道符號(hào)(|)開頭,那么會(huì)為它指定一個(gè)命令來(lái)處理錯(cuò)誤日志,如 ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/%w/errors_log" 。
如果系統(tǒng)支持,使用"syslog"替代文件名將通過 syslogd(8)來(lái)記載日志。默認(rèn)將使用系統(tǒng)日志機(jī)制local7 ,但您可以用"syslog:facility"語(yǔ)法來(lái)覆蓋這個(gè)設(shè)置,其中,facility的取值為syslog(1)中記載的任何一個(gè)名字。 - LogLevel:用于調(diào)整記錄在錯(cuò)誤日志中的信息的詳細(xì)程度。
語(yǔ)法:LogLevel level
可以選擇下列l(wèi)evel,依照重要性降序排列:
emerg 緊急(系統(tǒng)無(wú)法使用)
alert 必須立即采取措施
crit 致命情況
error 錯(cuò)誤情況
warn 警告情況
notice 一般重要情況
info 普通信息
debug 調(diào)試信息
當(dāng)指定了某個(gè)級(jí)別時(shí),所有級(jí)別高于它的信息也會(huì)被同時(shí)記錄。比如,指定 LogLevel info,則所有notice和warn級(jí)別的信息也會(huì)被記錄。建議至少使用crit級(jí)別。
當(dāng)錯(cuò)誤日志是一個(gè)單獨(dú)分開的正式文件的時(shí)候,notice級(jí)別的消息總是會(huì)被記錄下來(lái),而不能被屏蔽。但是,當(dāng)使用syslog來(lái)記錄時(shí)就沒有這個(gè)問題。 - LogFormat:定義訪問日志的記錄格式。
語(yǔ)法:LogFormat format|nickname [nickname]
LogFormat指令可以使用兩種定義格式中的一種。
在第一種格式中,指令只帶一個(gè)參數(shù),以定義后續(xù)的TransferLog指令定義的日志格式。另外它也可以通過下述的方法使用nickname來(lái)引用某個(gè)之前的LogFormat定義的日志格式。
第二種定義LogFormat指令的格式中,將一個(gè)直接的format和一個(gè)nickname聯(lián)系起來(lái)。這樣在后續(xù)的LogFormat或CustomLog指令中,就不用一再重復(fù)整個(gè)冗長(zhǎng)的格式串。定義別名的LogFormat指令僅僅用來(lái)定義一個(gè)nickname,而不做其它任何事情,也就是說,它只是定義了這個(gè)別名,它既沒有實(shí)際應(yīng)用這個(gè)別名,也不是把它設(shè)為默認(rèn)的格式。因此,它不會(huì)影響后續(xù)的TransferLog指令。另外,LogFormat不能用一個(gè)別名來(lái)定義另一個(gè)別名。nickname不能包含百分號(hào)(%)。
關(guān)于format的格式,請(qǐng)參見Apache2.2官方文檔中的自定義日志格式小節(jié)。 - CustomLog:設(shè)定日志的文件名和格式。
語(yǔ)法:CustomLog file|pipe format|nickname [env=[!]environment-variable]
第一個(gè)參數(shù)指定了日志記錄的位置,可以使用以下兩種方式來(lái)設(shè)定:
file 相對(duì)于ServerRoot的日志文件名。
pipe 管道符"|"后面緊跟著一個(gè)把日志輸出當(dāng)作標(biāo)準(zhǔn)輸入的處理程序路徑。
第二個(gè)參數(shù)指定了寫入日志文件的內(nèi)容。它既可以是由前面的LogFormat指令定義的nickname ,也可以是直接按Apache2.2官方文檔中的自定義日志格式小節(jié)所描述的規(guī)則定義的format字符串。
第三個(gè)參數(shù)是可選的,它根據(jù)服務(wù)器上特定的環(huán)境變量是否被設(shè)置來(lái)決定是否對(duì)某一特定的請(qǐng)求進(jìn)行日志記錄。如果這個(gè)特定的環(huán)境變量被設(shè)置(或者在"env=!name"的情況下未被設(shè)置),那么這個(gè)請(qǐng)求將被記錄。可以使用mod_setenvif和/或mod_rewrite模塊來(lái)為每個(gè)請(qǐng)求設(shè)置環(huán)境變量。 - TransferLog:指定日志文件的位置。
語(yǔ)法:TransferLog file|pipe
本指令除不允許直接定義日志格式或根據(jù)條件進(jìn)行日志記錄外,與CustomLog指令有完全相同的參數(shù)和功能。實(shí)際應(yīng)用中,日志的格式是由最近的非別名定義的LogFormat指令指定。如果沒有定義任何日志格式,則使用通用日志格式。 - Alias:映射URL到文件系統(tǒng)的特定區(qū)域。
語(yǔ)法:Alias URL-path file-path|directory-path
Alias指令使文檔可以被存儲(chǔ)在DocumentRoot以外的本地文件系統(tǒng)中。以(%已解碼的)url-path路徑開頭的URL可以被映射到以directory-path開頭的本地文件。
如果對(duì)在DocumentRoot之外的某個(gè)目錄建立了一個(gè)Alias ,則可能需要通過段明確的對(duì)目標(biāo)目錄設(shè)定訪問權(quán)限。
21.ScriptAlias:映射一個(gè)URL到文件系統(tǒng)并視之為CGI腳本目錄。
語(yǔ)法:ScriptAlias URL-path file-path|directory-path
ScriptAlias指令的行為與Alias指令相同,但同時(shí)它又標(biāo)明此目錄中含有應(yīng)該由cgi-script處理器處理的CGI腳本。以URL-path開頭的(%已解碼的)的URL會(huì)被映射到由第二個(gè)參數(shù)指定的具有完整路徑名的本地文件系統(tǒng)中的腳本。
ScriptSock:在以線程式MPM(worker)運(yùn)行的Apache中設(shè)置用來(lái)與CGI守護(hù)進(jìn)程通信的套接字文件名前綴(其后附加父進(jìn)程 PID組成完整的文件名)。這個(gè)套接字將會(huì)用啟動(dòng)Apache服務(wù)器的父進(jìn)程用戶權(quán)限(通常是root)打開。為了維護(hù)與CGI腳本通訊的安全性,不允許其他用戶擁有寫入套接字所在目錄的權(quán)限是很重要的。 - DefaultType:在服務(wù)器無(wú)法由其他方法確定內(nèi)容類型時(shí),發(fā)送的默認(rèn)MIME內(nèi)容類型。
語(yǔ)法:DefaultType MIME-type
默認(rèn):DefaultType text/plain - AddType:在給定的文件擴(kuò)展名與特定的內(nèi)容類型之間建立映射關(guān)系。
語(yǔ)法:AddType MIME-type extension [extension] ...
MIME-type指明了包含extension擴(kuò)展名的文件的媒體類型。這個(gè)映射關(guān)系會(huì)添加在所有有效的映射關(guān)系上,并覆蓋所有相同的extension擴(kuò)展名映射。
extension參數(shù)是不區(qū)分大小的,并且可以帶或不帶前導(dǎo)點(diǎn)。 - ErrorDocument:批示當(dāng)遇到錯(cuò)誤的時(shí)候服務(wù)器將給客戶端什么樣的應(yīng)答。
語(yǔ)法:ErrorDocument error-code document
error-code 服務(wù)器返回的錯(cuò)誤代碼
document 可以由一個(gè)斜杠(/)開頭來(lái)指示一個(gè)本地URL(相對(duì)于DocumentRoot),或是提供一個(gè)能被客戶端解釋的完整的URL。此外還能提供一個(gè)可以被瀏覽器顯示的消息。比如:
ErrorDocument 500http://www.entage.net/err500.html
ErrorDocument 404 /errors/bad_urls.html
ErrorDocument 403 "Sorry can't allow you access today" - EnableMMAP:指示httpd在遞送中如果需要讀取一個(gè)文件的內(nèi)容,它是否可以使用內(nèi)存映射。
語(yǔ)法:EnableMMAP On|Off
當(dāng)處理一個(gè)需要訪問文件中的數(shù)據(jù)的請(qǐng)求時(shí),比如說當(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)的問題:
在一些多處理器的系統(tǒng)上,內(nèi)存映射會(huì)減低一些httpd的性能;
在掛載了NFS的DocumentRoot上,若已經(jīng)將一個(gè)文件進(jìn)行了內(nèi)存映射,則刪除或截?cái)噙@個(gè)文件會(huì)造成httpd因?yàn)榉侄喂收隙罎ⅰ?br /> 在可能遇到這些問題的服務(wù)器配置過程中,應(yīng)當(dāng)使用下面的命令來(lái)禁用內(nèi)存映射: - EnableMMAP Off
對(duì)于掛載了NFS的文件夾,可以單獨(dú)在段中指定禁用內(nèi)存映射:
<Directory "/path-to-nfs-files">
EnableMMAP Off - EnableSendfile:控制httpd是否可以使用操作系統(tǒng)內(nèi)核的sendfile支持來(lái)將文件發(fā)送到客戶端。
默認(rèn)情況下,當(dāng)處理一個(gè)請(qǐng)求并不需要訪問文件內(nèi)部的數(shù)據(jù)時(shí)(比如發(fā)送一個(gè)靜態(tài)的文件內(nèi)容),如果操作系統(tǒng)支持,Apache將使用sendfile將文件內(nèi)容直接發(fā)送到客戶端而并不讀取文件。
這個(gè)sendfile機(jī)制避免了分開的讀和寫操作以及緩沖區(qū)分配,但是在一些平臺(tái)或者一些文件系統(tǒng)上,最好禁止這個(gè)特性來(lái)避免一些問題:
一些平臺(tái)可能會(huì)有編譯系統(tǒng)檢測(cè)不到的有缺陷的sendfile支持,特別是將在其他平臺(tái)上使用交叉編譯得到的二進(jìn)制文件運(yùn)行于當(dāng)前對(duì)sendfile支持有缺陷的平臺(tái)時(shí);
在Linux上啟用IPv6時(shí),使用sendfile將會(huì)觸發(fā)某些網(wǎng)卡上的TCP校驗(yàn)和卸載bug;
當(dāng)Linux運(yùn)行在Itanium處理器上的時(shí)候,sendfile可能無(wú)法處理大于2GB的文件;
對(duì)于一個(gè)通過網(wǎng)絡(luò)掛載了NFS文件系統(tǒng)的DocumentRoot (比如:NFS或SMB),內(nèi)核可能無(wú)法可靠的通過自己的緩沖區(qū)服務(wù)于網(wǎng)絡(luò)文件。
如果出現(xiàn)以上情況,你應(yīng)當(dāng)禁用sendfile:
EnableSendfile Off
針對(duì)NFS或SMB,可以單獨(dú)在段中指定禁用:
<Directory "/path-to-nfs-files">
EnableSendfile Off include:在服務(wù)器配置文件中包含其它配置文件。
語(yǔ)法:Include file-path|directory-path
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è)斜杠開頭),或是相對(duì)于ServerRoot目錄的相對(duì)路徑。設(shè)置動(dòng)態(tài)加載的DSO模塊
如果需要提供基于文本文件的認(rèn)證,加載此模塊,否則注釋掉
LoadModule authn_file_module modules/mod_authn_file.so
如果需要提供基于DBM文件的認(rèn)證,加載此模塊,否則注釋掉
LoadModule authn_dbm_module modules/mod_authn_dbm.so
如果需要提供匿名用戶認(rèn)證,加載此模塊,否則注釋掉
LoadModule authn_anon_module modules/mod_authn_anon.so
如果需要提供基于SQL數(shù)據(jù)庫(kù)的認(rèn)證,加載此模塊,否則注釋掉
LoadModule authn_dbd_module modules/mod_authn_dbd.so
如果需要在未正確配置認(rèn)證模塊的情況下簡(jiǎn)單拒絕一切認(rèn)證信息,加載此模塊,否則注釋掉
LoadModule authn_default_module modules/mod_authn_default.so
此模塊提供基于主機(jī)名、IP地址、請(qǐng)求特征的訪問控制,Allow、Deny指令需要,推薦加載。
LoadModule authz_host_module modules/mod_authz_host.so
如果需要使用純文本文件為組提供授權(quán)支持,加載此模塊,否則注釋掉
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
如果需要提供基于每個(gè)用戶的授權(quán)支持,加載此模塊,否則注釋掉
LoadModule authz_user_module modules/mod_authz_user.so
如果需要使用DBM文件為組提供授權(quán)支持,加載此模塊,否則注釋掉
LoadModule authz_dbm_module modules/mod_authz_dbm.so
如果需要基于文件的所有者進(jìn)行授權(quán),加載此模塊,否則注釋掉
LoadModule authz_owner_module modules/mod_authz_owner.so
如果需要在未正確配置授權(quán)支持模塊的情況下簡(jiǎn)單拒絕一切授權(quán)請(qǐng)求,加載此模塊,否則注釋掉
LoadModule authz_default_module modules/mod_authz_default.so
如果需要提供基本的HTTP認(rèn)證,加載此模塊,否則注釋掉,此模塊至少需要同時(shí)加載一個(gè)認(rèn)證支持模塊和一個(gè)授權(quán)支持模塊
LoadModule auth_basic_module modules/mod_auth_basic.so
如果需要提供HTTP MD5摘要認(rèn)證,加載此模塊,否則注釋掉,此模塊至少需要同時(shí)加載一個(gè)認(rèn)證支持模塊和一個(gè)授權(quán)支持模塊
LoadModule auth_digest_module modules/mod_auth_digest.so
此模塊提供文件描述符緩存支持,從而提高Apache性能,推薦加載,但請(qǐng)小心使用
LoadModule file_cache_module modules/mod_file_cache.so
此模塊提供基于URI鍵的內(nèi)容動(dòng)態(tài)緩存(內(nèi)存或磁盤),從而提高Apache性能,必須與mod_disk_cache/mod_mem_cache同時(shí)使用,推薦加載
LoadModule cache_module modules/mod_cache.so
此模塊為mod_cache提供基于磁盤的緩存管理,推薦加載
LoadModule disk_cache_module modules/mod_disk_cache.so
此模塊為mod_cache提供基于內(nèi)存的緩存管理,推薦加載
LoadModule mem_cache_module modules/mod_mem_cache.so
如果需要管理SQL數(shù)據(jù)庫(kù)連接,為需要數(shù)據(jù)庫(kù)功能的模塊提供支持,加載此模塊,否則注釋掉(推薦)
LoadModule dbd_module modules/mod_dbd.so
此模塊將所有I/O操作轉(zhuǎn)儲(chǔ)到錯(cuò)誤日志中,會(huì)導(dǎo)致在日志中寫入及其海量的數(shù)據(jù),只建議在發(fā)現(xiàn)問題并進(jìn)行調(diào)試的時(shí)候使用
LoadModule dumpio_module modules/mod_dumpio.so
如果需要使用外部程序作為過濾器,加載此模塊(不推薦),否則注釋掉
LoadModule ext_filter_module modules/mod_ext_filter.so
如果需要實(shí)現(xiàn)服務(wù)端包含文檔(SSI)處理,加載此模塊(不推薦),否則注釋掉
LoadModule include_module modules/mod_include.so
如果需要根據(jù)上下文實(shí)際情況對(duì)輸出過濾器進(jìn)行動(dòng)態(tài)配置,加載此模塊,否則注釋掉
LoadModule filter_module modules/mod_filter.so
如果需要服務(wù)器在將輸出內(nèi)容發(fā)送到客戶端以前進(jìn)行壓縮以節(jié)約帶寬,加載此模塊(推薦),否則注釋掉
LoadModule deflate_module modules/mod_deflate.so
如果需要記錄日志和定制日志文件格式,加載此模塊(推薦),否則注釋掉
LoadModule log_config_module modules/mod_log_config.so
如果需要對(duì)每個(gè)請(qǐng)求的輸入/輸出字節(jié)數(shù)以及HTTP頭進(jìn)行日志記錄,加載此模塊,否則注釋掉
LoadModule logio_module modules/mod_logio.so
如果允許Apache修改或清除傳送到CGI腳本和SSI頁(yè)面的環(huán)境變量,加載此模塊,否則注釋掉
LoadModule env_module modules/mod_env.so
如果允許通過配置文件控制HTTP的"Expires:"和"Cache-Control:"頭內(nèi)容,加載此模塊(推薦),否則注釋掉
LoadModule expires_module modules/mod_expires.so
如果允許通過配置文件控制任意的HTTP請(qǐng)求和應(yīng)答頭信息,加載此模塊,否則注釋掉
LoadModule headers_module modules/mod_headers.so
如果需要實(shí)現(xiàn)RFC1413規(guī)定的ident查找,加載此模塊(不推薦),否則注釋掉
LoadModule ident_module modules/mod_ident.so
如果需要根據(jù)客戶端請(qǐng)求頭字段設(shè)置環(huán)境變量,加載此模塊,否則注釋掉
LoadModule setenvif_module modules/mod_setenvif.so
此模塊是mod_proxy的擴(kuò)展,提供Apache JServ Protocol支持,只在必要時(shí)加載
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
此模塊是mod_proxy的擴(kuò)展,提供負(fù)載均衡支持,只在必要時(shí)加載
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
如果需要根據(jù)文件擴(kuò)展名決定應(yīng)答的行為(處理器/過濾器)和內(nèi)容(MIME類型/語(yǔ)言/字符集/編碼),加載此模塊,否則注釋掉
LoadModule mime_module modules/mod_mime.so
如果允許Apache提供DAV協(xié)議支持,加載此模塊,否則注釋掉
LoadModule dav_module modules/mod_dav.so
此模塊生成描述服務(wù)器狀態(tài)的Web頁(yè)面,只建議在追蹤服務(wù)器性能和問題時(shí)加載
LoadModule status_module modules/mod_status.so
如果需要自動(dòng)對(duì)目錄中的內(nèi)容生成列表(類似于"ls"或"dir"命令),加載此模塊(會(huì)帶來(lái)安全問題,不推薦),否則注釋掉
LoadModule autoindex_module modules/mod_autoindex.so
如果需要服務(wù)器發(fā)送自己包含HTTP頭內(nèi)容的文件,加載此模塊,否則注釋掉
LoadModule asis_module modules/mod_asis.so
如果需要生成Apache配置情況的Web頁(yè)面,加載此模塊(會(huì)帶來(lái)安全問題,不推薦),否則注釋掉
LoadModule info_module modules/mod_info.so
如果需要在非線程型MPM(prefork)上提供對(duì)CGI腳本執(zhí)行的支持,加載此模塊,否則注釋掉
LoadModule cgi_module modules/mod_cgi.so
此模塊在線程型MPM(worker)上用一個(gè)外部CGI守護(hù)進(jìn)程執(zhí)行CGI腳本,如果正在多線程模式下使用CGI程序,推薦替換mod_cgi加載,否則注釋掉
LoadModule cgid_module modules/mod_cgid.so
此模塊為mod_dav訪問服務(wù)器上的文件系統(tǒng)提供支持,如果加載mod_dav,則也應(yīng)加載此模塊,否則注釋掉
LoadModule dav_fs_module modules/mod_dav_fs.so
如果需要提供大批量虛擬主機(jī)的動(dòng)態(tài)配置支持,加載此模塊,否則注釋掉
LoadModule vhost_alias_module modules/mod_vhost_alias.so
如果需要提供內(nèi)容協(xié)商支持(從幾個(gè)有效文檔中選擇一個(gè)最匹配客戶端要求的文檔),加載此模塊(推薦),否則注釋掉
LoadModule negotiation_module modules/mod_negotiation.so
如果需要指定目錄索引文件以及為目錄提供"尾斜杠"重定向,加載此模塊(推薦),否則注釋掉
LoadModule dir_module modules/mod_dir.so
如果需要處理服務(wù)器端圖像映射,加載此模塊,否則注釋掉
LoadModule imagemap_module modules/mod_imagemap.so
如果需要針對(duì)特定的媒體類型或請(qǐng)求方法執(zhí)行CGI腳本,加載此模塊,否則注釋掉
LoadModule actions_module modules/mod_actions.so
如果希望服務(wù)器自動(dòng)糾正URL中的拼寫錯(cuò)誤,加載此模塊(推薦),否則注釋掉
LoadModule speling_module modules/mod_speling.so
如果允許在URL中通過"/~username"形式從用戶自己的主目錄中提供頁(yè)面,加載此模塊,否則注釋掉
LoadModule userdir_module modules/mod_userdir.so
此模塊提供從文件系統(tǒng)的不同部分到文檔樹的映射和URL重定向,推薦加載
LoadModule alias_module modules/mod_alias.so
如果需要基于一定規(guī)則實(shí)時(shí)重寫URL請(qǐng)求,加載此模塊(推薦),否則注釋掉
LoadModule rewrite_module modules/mod_rewrite.so
轉(zhuǎn)載于:https://www.cnblogs.com/JevonWei/p/7287357.html
總結(jié)
以上是生活随笔為你收集整理的Apache2 httpd.conf 配置详解(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql-4-数据库的基本操作
- 下一篇: c++设计模式之简单工厂模式