Apache配置文件:conf/httpd.conf。(注意:表示路徑時使用‘/’而不使用‘\’,注釋使用‘#’)
1. ServerRoot:服務器根目錄,也就是Apache的安裝目錄,其他的目錄配置若是使用相對路徑,都是相對於服務器根目錄的。
配置示例:
ServerRoot “D:/wamp/bin/Apache2.4.23”
2. Listen:服務器監聽的端口,可以只配置端口,也可以同時指定IP地址和端口,還可以指定使用的協議。(可配置多個端口)
完整配置示例:
Listen 127.0.0.1:80 http
3. DocumentRoot:網站的根目錄,也就是放置網站文件的地方。
配置示例:
DocumentRoot = “D:/wamp/www”
4. LoadModule:加載特定的DSO模塊,這些已編譯的DSO模塊存放於Apache安裝目錄下的modules目錄中。
配置示例:
LoadModule actions_module modules/mod_actions.so
5. User:設置實際提供服務的子進程的用戶。
配置示例:
User daemon
6. Group:設置提供服務的Apache子進程運行時的用戶組。
配置示例:
Group daemon
7. ServerAdmin:設置在所有返回給客戶端的錯誤信息中包含的管理員的郵件地址。(也可以使用URL)
配置示例:
ServerAdmin 23423423@qq.com
8. ServerName:設置服務器用於識別自己的主機名和端口號。如果沒有指定端口號,服務器會使用接受請求的那個端口。
配置示例:
ServerName localhost:80
9. <Directory>:和</Directory>一起用於封裝一組指令,使之僅對某個目錄及其子目錄生效。該指令不能被嵌套使用,也不能出現
在<Limit>或<LimitExcept>配置段中。
配置示例:
<Directory “D:/wamp/www”>
Options Indexes FollowSymLinks MultiViews Includes IncludesNOEXEC ExecCGI
AllowOverride None
Order allow, deny
allow from all
</Directory>
指令及其參數說明:
(1)Options:控制在特定目錄中將使用哪些服務器特性。
Indexs:若訪問目錄下無index文件,則准許顯示該目錄下的文件列表以供選擇。
FollowSymLinks:准許在目錄中使用符號鏈接到其他目錄。
MultiViews:准許內容協商的“多重視圖”。如果客戶端請求的路徑可能對應多種類型的文件,服務器將根據客戶端請求的具體情
況自動選擇一個最匹配客戶端要求的文件。例如只在地址欄輸入index也可以訪問到index.php頁面。
Includes:准許SSI。
IncludesNOEXEC:准許SSI,但不可使用exec和include功能。
ExecCGI:准許在該目錄下使用CGI。
All:表示除了MultiViews之外的所有特性。
None:表示不啟用任何的服務器特性。
注意:如果一個目錄被多次設置了options,則最特殊的一個會被完全接受。
(2)AllowOverrid:是否准許文件“.htaccess”中設定的權限覆蓋“access.conf”文件中設定的權限。
All:准許覆蓋。
None:不准許覆蓋。
AuthConfig:允許使用與認證授權相關的指令。
FileInfo:允許使用控制文檔類型的指令、控制文檔元數據的指令、mod_rewrite中的指令、mod_actions中的Action指令。
Indexs:允許使用控制目錄索引的指令。
Limit:允許使用控制主機訪問的指令。
(3)Order:控制默認的訪問狀態和allow、deny指令生效的順序。
allow:允許訪問。
deny:拒絕訪問。
這兩個參數由最后一個出現的參數決定,如“Order allow,deny”默認拒絕了所有的意思(中間有且只有一個逗號),但最終的判斷
結果還要總下面的allow、deny語句中各自所包含的范圍(如果有的話),這兩個語句后面都一定接着“from”,否則Apache
會無法啟動。“Order allow,deny”表示先判斷allow語句再判斷deny語句。
注意:上面的Order和allow、deny語句是針對Apache2.2的配置,Apache2.4的客戶端訪問控制由Require語句來配置。
區別示例:
拒絕所有請求:
2.2配置:
Order deny,allow
deny from all
2.4配置:
Require all denied
允許所有請求:
2.2配置:
Order allow,deny
allow from all
2.4配置:
Require all granted
只允許某個特定IP的訪問:
2.2配置:
Order deny,allow
deny from all
allow IP-address
2.4配置
Require host IP-addres
10. <Files>:提供基於文件名的訪問控制。<Files>段將根據他們在配置文件中出現的順序被處理:在<Directory>段和.htaccess文件被處理之后,但在<Location>段之前。<Files>能嵌
入到<Directory>段中以限制它們作用的文件范圍。也可用於.htaccess文件當中,以允許用戶在文件層面上控制對文件的訪問。
配置示例:
<Files ".ht*">
Require all denied
</Files>
11. <IfModule>:封裝根據指定的模塊是否啟用而決定是否生效的指令。
配置示例:
<IfModule http2_module>
ProtocolsHonorOrder On
Protocols h2 h2c http/1.1
</IfModule>
12. DirectoryIndex:當客戶端請求一個目錄時尋找的資源列表。
配置示例:
DirectoryIndex index.php index.htm index.html
(服務器將返回最先找到的那一個)
13. ErrorLog:指定當服務器遇到錯誤時記錄錯誤日志的文件。
(若不是一個以“/”開頭的絕對路徑,則是一個相對於ServerRoot的相對路徑)
配置示例:
ErrorLog "logs/error.log"
14. LogLevel:用於調整記錄在錯誤日志中的信息的詳細程度。
錯誤信息詳細程度按重要性降序排列如下:
emerg:緊急(系統無法使用)
alert:必須立即采取措施。
crit:致命情況。
error:錯誤情況。
warn:警告情況。
notice:一般重要情況。
info:普通信息。
debug:調試信息。
(當指定了某個級別時,所有級別高於它的信息也會被同時記錄)
配置示例:
LogLevel warn
15. LogFormat:定義訪問日志的記錄格式。
配置示例:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
(其中common就是這種格式的標識符)
16. CustomLog:設定日志的文件名和格式。
配置示例:
CustomLog "logs/access.log" common
(使用標識符common定義的格式來記錄logs/access.log這個日志文件)
17. TransferLog:指定日志文件的位置。
本指令除不允許直接定義日志格式或根據條件進行日志記錄外,與CustomLog指令有完全相同的參數和功能。
18. Alias:映射URL到文件系統的特定區域。Alias指令使客戶端可以訪問到DocumentRoot以外的本地文件。
配置示例:
Alias /myphoto "E:/照片"
<Directory "E:/照片">
Options Indexes
Require all granted
</Directory>
目錄/myphoto是相對於DocumentRoot的相對路徑,甚至可以是一個不存在的目錄,這時訪問該目錄就會映射到“E:/照片”目錄中。
注意:一定要通過<Directory>段明確地對目標目錄設定訪問權限,否則會提示“forbidden”。
Redirect:將一個路徑重定向到另一個路徑下。
配置示例:
Redirect /haha /chsfc
(Redirect和Alias不同,配置中的兩個路徑都是在DocumentRoot目錄下的)
注意:要使用Alias和Redirect都應該先開啟alias_module模塊功能。
19. ScriptAlias:映射一個URL到文件系統並視之為CGI腳本目錄。
配置示例:
ScriptAlias /cgi-bin/ "D:/wamp/bin/Apache2.4.23/cgi-bin"
20. DefaultType:當服務器無法確定一個文檔的內容類型時發送的默認MIME內容類型。
配置示例:
DefaultType text/plain (純文本,瀏覽器在內部打開)
DefaultType application/octet-stream (瀏覽器提示用戶進行保存)
21. AddType:為特定后綴的文件指定MIME類型,這里的設置將覆蓋mime.types中的設置。
配置示例:
AddType application/x-httpd-php .php .html .htm (前導點可帶可不帶)
22. ErrorDocument:批示當遇到錯誤的時候服務器將給客戶端什么樣的應答。
語法:
ErrorDocument error-code document
其中error-code時服務器返回的錯誤代碼,document是回應的數據,可以是簡單的文本,
本地網頁,本地CGI程序,或遠程主機上的網頁。
配置示例:
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 402 http://www.example.com/subscription_info.html
23. EnableMMAP:指示httpd在遞送中如果需要讀取一個文件的內容,是否可以使用內存映射。
配置示例:
EnableMMAP On
EnableMMAP Off
(這種內存映射有時會帶來性能的提高,有時卻會出現問題)
24. EnableSendfile:控制httpd是否可以使用操作系統內核的sendfile支持來將文件發送到戶端。
配置示例:
EnableSendfile Off
(這個sendfile機制避免了分開的讀和寫操作以及緩沖區分配,但是在一些平台或文件系統上會引發一些問題)
25. include:在服務器配置文件中包含其他配置文件。
配置示例:
include conf/extra/httpd-autoindex.conf
在Apache安裝目錄下的conf/extra/目錄中有一些補充配置文件,可以根據需要,通過配置將它們包含到主配置文件conf/httpd.conf文件中。