Apache監控與調優(二)配置文件


Apache監控與調優(二)配置文件

apache配置文件為httpd.conf,所在位置為conf目錄下。任何指令都可以放置在這個配置文件中,但這些修改的指令都只能是在httpd啟動或重新啟動時才能被識別。

httpd配置文件每行包含一個指令。反斜槓“ \\”可以用作一行的最後一個字符,以指示該指令繼續到下一行。反斜槓和行尾之間不得有其他字符或空格。指令的參數由空格分隔。如果參數包含空格,則必須將該參數用引號引起來。配置文件中的指令不區分大小寫,但是指令的參數通常區分大小寫。以井號“#”開頭的行被視為註釋,並被忽略。註釋不能與配置指令放在同一行。在指令之前會出現空白,因此為了清楚起見,您可以縮進指令。空行也將被忽略。

可以使用語法在配置文件行中使用Shell環境變量的值${ENVVAR}。如果“ ENVVAR”是有效環境變量的名稱,則將該變量的值替換為配置文件行中的該位置,然後繼續進行處理,就像直接在配置文件中找到該文本一樣。(如果找不到ENVVAR變量,則字符“ $ {ENVVAR}”將保持不變,以供配置文件處理中的後續階段使用。)

在環境變量替換之後,配置文件中一行的最大長度為8192個字符,該變量是在替換環境變量,連接任何連續的行並刪除開頭和結尾的空白之後。

您可以使用apachectl configtest或-t命令行選項在不啟動服務器的情況下檢查配置文件中的語法錯誤。

配置文件中常見配置項說明:

1. ServerRoot

http-www的Home目錄,用來存放配置文件、錯誤文件、記錄文件。

2. Listen

用於設置服務器IP地址和端口號,apache默認端口號是80。

3.User

啟動apache的相關用戶

4.Group:

啟動apache相關組

5.PidFile:

表示啟動程序進程所在的位置

6.Timeout:

表示連接超時,如果客戶端與服務器已連接上,在超時範圍內還未發送請求給服務器,那麼服務器會自動與客戶端斷開。

7.KeepAlive:

表示是否保持長連接,即在一個TCP連接下可以發送多個HTTP請求。

語法:

KeepAlive On|Off

默認值:

KeepAlive On

HTTP1.0的Keep-Alive擴展功能和HTTP1.1的持久連接功能提供了長期存在的HTTP會話,該會話允許通過同一TCP連接發送多個請求。

8.KeepAliveTimeout:

表示當開啟長連接時,請求與請求之間的時間隔。

KeepAliveTimeout seconds

KeepAliveTimeout 5

設置KeepAliveTimeout為較高的值可能會導致服務器負載過重的性能問題。超時時間越長,等待與空閒客戶端進行連接的服務器進程將被佔用的時間越長。

9.MPM相關參數

MPM是多通路處理模塊,主要的參數包括:StartServers、MaxClients、Serverlimit、MinSpareThreads、MaxSpareThreads、ThreadsPerChild和MaxRequestsPerChild。這些參數具體的使用在後面講MPM調優時會詳細來介紹。

10.ServerName

表示服務器的主機名

11.DocumentRoot

表示發佈的應用程序所在的位置

DocumentRoot語法:

DocumentRoot directory-path

默認值:

DocumentRoot /usr/local/apache/htdocs

該指令設置httpd將從該路徑下獲取取。例:

DocumentRoot /usr/web

如果訪問 http://www.my.host.com/index.html將指向 /usr/web/index.html。如果目錄路徑不是絕對路徑,則假定它是相對於的ServerRoot。

12. Directory指令

<directory>和/<directory>用於封裝一組指令,使之僅對某個目錄及其子目錄生效。使用<directory>… /<directory>設置指定目錄的訪問權限,其中可包含:Options、AllowOverride 、Order、Allow 、Deny。

其語法如下:

<directory>

...

Directory-path可以是目錄的完整路徑,也可以是使用Unix Shell樣式匹配的通配符字符串。在通配符字符串中,?匹配任何單個字符,並且*匹配任何字符序列,也可以使用[]約束字符的範圍。所有通配符都不匹配'/'字符,因此<directory>將不匹配 /home/user/public_html,但<directory>將匹配。例:/<directory>/<directory>

<directory>

Options Indexes FollowSymLinks

除了可以使用通配符匹配路徑外,路徑也可以支持正則表達式的形式。例如:

<directory>

表示將匹配/www/由三個數字組成的目錄。

如果多個(非正則表達式)<directory>節與包含文檔的目錄(或其父目錄之一)匹配,則將以最短匹配的順序應用這些指令,並在這些文件中插入.htaccess文件中的指令。例如,/<directory>

<directory>

AllowOverride None

<directory>

AllowOverride FileInfo

AllowOverride None:表示(禁用.htaccess文件)。

AllowOverride FileInfo:表示(用於directory /home)。

以訪問文檔/home/web/dir/doc.html為例,其訪問順序如下:

應用所有FileInfo的指令 /home/.htaccess、/home/web/.htaccess、/home/web/dir/.htaccess,並按此順序訪問。

13. DirectoryMatch指令

包含適用於與正則表達式及其子目錄匹配的文件系統目錄的指令。

語法:

< DirectoryMatch regex >

...

這些指令將僅適用於命名目錄和 該目錄的子目錄(以及其中的文件)<directory>。但是,它以正則表達式作為參數。例如:/<directory>

<directorymatch>

將匹配/www/由三個數字組成的目錄。

14.IfModule指令

語法:

<ifmodule> ... /<ifmodule>

表示檢測特定的模塊是否存在,如果存在則執行裡面的指令,如果不存在則忽略開始標記到結束標記之間所有的內容。

15.Location指令

語法:

<location> ... /<location>

該指令是將其附隨的參數傳遞到URL中,location指令後面的參數就是直接應用於URL請求中的,如果需求生效,那麼URL路徑部分應該滿足以下任一條件:

Ø 指定的位置與URL的路徑部分完全匹配。

Ø 以反斜槓結尾的指定位置是URL路徑部分的前綴。

Ø 指定的位置(帶有尾部的斜槓)是URL路徑部分的前綴。

如/ private1,/ private1 /和/private1/file.txt,將這些目錄附隨到URL地址中。

該URL可以使用通配符。在通配符字符串中,?匹配任何單個字符,並且*匹配任何字符序列。這兩個通配符都不匹配URL路徑中的/。

除~字符外,還可以使用 正則表達式。例如:

<location>

16. Options指令

options用於配置特定目錄中可用的功能

語法:

Options [+|-]option [[+|-]option] ...

該Options指令用於控制訪問服務器目錄的權限。選項可以設置為None,在這種情況下,不會啟用任何附加功能,或者以下一項或多項:

Ø All

表示除MultiViews之外的所有特性,該選項為默認值。

Ø ExecCGI

允許使用mod_cgi模塊執行CGI腳本。

Ø FollowSymLinks

服務器允許在此目錄中使用符號連接,如果需求將目錄鏈接到其它的路徑下就需要使用到符號鏈接。如果該配置選項位於 <location>配置段中,將會被忽略。即使服務器遵循符號鏈接,它也不會 更改<directory>指令中的路徑名。在FollowSymLinks和 SymLinksIfOwnerMatch Options只在<directory>段中進行工作或針對於 .htaccess文件有效。/<directory>/<directory>/<location>

Ø Indexes

表示匹配的index文件類型,如果輸入的網址中有這個index文件,那麼就會顯示出這個文件內容,如果沒有index文件,則會返回由mod_autoindex模塊生成的一個格式化的目錄列表,並列出該目錄下的所有文件。

Ø MultiViews

允許使用mod_negotiation模塊提供內容協商的"多重視圖"。簡而言之,如果客戶端請求的路徑可能對應多種類型的文件,那麼服務器將根據客戶端請求的具體情況自動選擇一個最匹配客戶端要求的文件。在 HTTP 協議中,內容協商是這樣一種機制,通過為同一 URI 指向的資源提供不同的展現形式,可以使用戶代理選擇與用戶需求相適應的最佳匹配(例如,文檔使用的自然語言,圖片的格式,或者內容編碼形式)。

一份特定的文件稱為一項資源。當客戶端獲取資源的時候,會使用其對應的 URL 發送請求。服務器通過這個 URL 來選擇它指向的資源的某一變體——每一個變體稱為一種展現形式——然後將這個選定的展現形式返回給客戶端。整個資源,連同它的各種展現形式,共享一個特定的 URL 。當一項資源被訪問的時候,特定展現形式的選取是通過內容協商機制來決定的,並且客戶端和服務器端之間存在多種協商方式。

Ø SymLinksIfOwnerMatch

服務器僅在符號連接與目標文件或目錄的所有者具有相同的用戶ID時才使用它。簡而言之,只有當符號連接和符號連接指向的目標文件或目錄的所有者是同一用戶時,才會使用符號連接。如果該配置選項位於 <location>配置段中,將會被忽略。/<location>

Apache允許在一個目錄配置中設置多個Options指令,如果一個目錄中設置了多個Options指令,那麼特性最多的Options指令會被使用,其它的都會被忽略,默認情況下各個Options指令之間並不會合併,但可能通過"+"或"-"。"+"表示將該選項添加到選中來,"-"選擇在選項中刪除該選項。

注意:混合使用前面帶"+"/"-"和前面不帶"+"/"-"的同一可選項,可能會導致出現意料之外的結果。


分享到:


相關文章: