1. 程式人生 > >apacheserver全局配置具體解釋

apacheserver全局配置具體解釋

瀏覽器中 過程 匿名共享 返回 net 傳遞 線程數 pad 是否

server標識相關指令:
ServerName
ServerAdmin
ServerSignature
ServerTokens
UseCanonicalName
UseCanonicalPhysicalPort

ServerAdmin和ServerTokens指令控制有關server的哪些信息將出如今server生成的文檔中(如錯誤消息)。ServerTokens指令設置serverHTTP響應頭字段的值。
ServerName、UseCanonicalName、 UseCanonicalPhysicalPort指令用來決定如何構建自引用URL,譬如。某client對一個文件夾發出請求,但沒有包括文件夾名最後的斜線"/",Apache將重定向client到包括"/"的全名。以使client能夠正確解析文檔中的相對引用。



ServerName指令
語法:ServerName [scheme://] FQDN [:port]
這個指令用來設置server用於辨識自己的主機名和port號。主要用於創建重定向URL。

比如,你的webserver的主機名為example.bob.com,但你的webserver同一時候在DNSserver中擁有一個DNS別名www.bob.com。而你希望webserver更顯著一點,你能夠在http.conf中使用ServerName指令來實現:
ServerName www.bob.com:80

當沒有指定ServerName時,server會嘗試對IP地址進行反向查詢來判斷主機名。假設在ServerName中沒有指定port號,server會監聽全部port。為了加強可靠性和可預測性,應該使用ServerName顯示的指定一個主機名和port號。


假設使用的是基於域名的虛擬主機,在<VirtualHost>段中的ServerName將是為了匹配這個虛擬主機,在“Host:”請求頭中必須寫主機名。

ServerAdmin指令
語法:ServerAdmin email-address|URL
這個指令用來設置server返回給client的錯誤信息中包括的管理員郵件地址。便於用戶在收到錯誤信息後能及時與管理員取得聯系。

ServerAdmin [email protected]

ServerSignature指令
語法:ServerSignature . | Off | Email
默認:ServerSignature Off
這個指令用來配置server端生成文檔的頁腳(錯誤信息、mod_proxy的FTP文件夾列表、mod_info的輸出)。使用該指令來啟用這個頁腳主要在於處於一個代理server鏈中的時候,用戶基本無法辨識出到底是鏈中的哪個server真正產生了返回的錯誤信息。

http.conf中該指令默認是Off的,這樣就沒有錯誤行;使用On會簡單的添加一行關於server版本號和正在提供服務的ServerName。
比如。我使用ServerSignature .後,在沒有打開web頁面時出現以下的信息:

Apache/2.2.11 (Unix) PHP/5.2.8 Server at 192.168.120.240 Port 80

對於2.0.44以後的版本號,顯示具體的server版本號號將由ServerTokens指令控制。



ServerTokens指令
語法:ServerTokens Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full
默認:ServerTokens Full
這個指令用來控制server回應給client的“Server:”應答頭是否包括關於server操作系統類型和編譯進的模塊描寫敘述信息。

註意:在使用ServerTokens指令時要先啟用ServerSignature指令。



ServerTokens Prod[uctOnly]:server會發送(比方):Apache
Apache Server at 192.168.120.240 Port 80
ServerTokens Major:server會發送(比方):Apache/2
Apache/2 Server at 192.168.120.240 Port 80
ServerTokens Minor:server會發送(比方):Apache/2.2
Apache/2.2 Server at 192.168.120.240 Port 80
ServerTokens Min[imal]:server會發送(比方):Apache/2.2.11
Apache/2.2.11 Server at 192.168.120.240 Port 80
ServerTokens OS:server會發送(比方):Apache/2.2.11(Unix)
Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80
ServerTokens Full:server會發送(比方):Apache/2.2.11(Unix)PHP/5.2.8
Apache/2.2.11 (Unix) PHP/5.2.8 Server at 192.168.120.240 Port 80

UseCanonicalName指令
語法:UseCanonicalName On | Off | DNS
默認:UseCanonicalName Off
這個指令用來構造Apache的自引用URL(一個指回同樣server的URL)。

UseCanonicalName .:會將ServerName設置的域名用於全部的自引用URL、SERVER_NAME、CGI中的SERVER_PORT。

比方:假設你的webserver有自己的域名,並且在DNS中有相應的NS記錄。並且httpd.conf將ServerName設置了域名,那麽你在瀏覽器中輸入http://192.168.120.240/bbs,它會自己主動將這個IP地址變成其相應的域名。比方http://www.bob.com/bbs/ 。

此時,假設其它client的電腦不能正確的解析webserver的這個域名,那麽在訪問這個webserver時將會出現故障。由於webserver會自己主動將IP地址轉變成域名。



UseCanonicalName Off:假設client提供了主機名和port,Apache將會使用client提供的這些信息來構建自引用URL。這些值與用於實現基於域名的虛擬主機的值相同,而且對於相同的client可用。CGI變量SERVER_NAME和SERVER_PORT也會由client提供的值來構建。

UseCanonicalName DNS:本設置用於為大量基於IP的虛擬主機支持那些不提供“Host:“頭的瀏覽器使用。使用這個選項時,Apache將對client連入的server的IP地址進行DNS反向解析。以構建自引用URL。

UseCanonicalPhysicalPort指令
語法:UseCanonicalPhysicalPort . | Off
默認:UseCanonicalPhysicalPort Off
這個指令用來配置server怎樣確定自己的port。

UseCanonicalPhysicalPort .:Apache有可能在構造server的規範port時為了符合UseCanonicalName指令而使用實際的物理port號。


UseCanonicalPhysicalPort Off:Apache不會使用實際的物理port號。而是依賴全部已經配置的信息來構造一個合法的port號。

註意:
決定使用物理port號的次序例如以下:
UseCanonicalName .
Servername指定的port號
物理port號
默認port號

UseCanonicalName Off | DNS
“Host:”請求頭提供的port號
物理port號
Servername指定的port號
默認port號
在UseCanonicalPhysicalPort Off的情況下。物理port號將會從上述順序中剔除。

Apacheserver全局配置之文件定位配置篇

文件定位相關指令:
CoreDumpDirectory
DocumentRoot
ErrorLog
LockFile
PidFile
ScoreBoardFile
ServerRoot

這些指令控制Apache正常工作所需的各種文件的定位。假設路徑名不以斜線“/”開頭,那麽就覺得該文件是相對於ServerRoot的相對路徑。

CoreDumpDirectory指令
語法:CoreDumpDirectory directory-path
這個指令用來控制Apache使用的內核轉儲文件夾,該轉儲文件夾默認位於“ServerRoot”下。由於這個文件夾通常對於執行server的用戶是不可寫的。內核轉儲一般也不會寫入內容。假設你在調試中須要內核轉儲,那麽你能夠用這個指令來指定另外一個文件夾。

DocumentRoot指令
語法:DocumentRoot directory-path
這個指令用來設置httpd提供服務的文件夾。

在沒有使用類似Alias這種指令的情況下。server會將請求中的URL附加到DocumentRoot後面以構成指向文檔的路徑。
比如:
DocumentRoot “/usr/local/httpd/htdocs”
那麽在訪問http://192.168.120.240/bbs/index.html時,實際上就是訪問/usr/loca/httpd/htdocs/bbs/index.html。
假設directory-path不是絕對路徑。則就會被假定為相對於ServerRoot的路徑。


比如:
ServerRoot “/usr/local/httpd/”
DocumentRoot “htdocs”
那麽在訪問http://192.168.120.240/bbs/index.html時,實際上還是會被定位到/usr/loca/httpd/htdocs/bbs/index.html。

ErrorLog指令
語法:ErrorLog file-path | syslog[:facility]
默認:ErrorLog “logs/error_log”
這個指令用來設置當server遇到錯誤時記錄錯誤日誌的文件。假設file-path不是以/開頭的絕對路徑,那麽將會被覺得是一個相對於ServerRoot的相對路徑。



LockFile指令
語法:LockFile filename
這個指令設置當AcceptMutex指令的值是fcntl或flock的時候,Apache使用的鎖文件的位置。

一般保持默認值。改變默認值的主要原因是logs文件夾位於一個NFS文件系統上。由於鎖文件必須位於本地磁盤上。主server進程的PID會自己主動加入到文件名稱後面。
註意:不要將該鎖文件放在不論什麽人都有寫權限的文件夾中。由於別人能夠通過建立一個與server企圖建立的鎖文件同名的文件,來阻止server啟動。

PidFile指令
語法:PidFile filename
默認:PidFile “logs/httpd.pid”
這個指令用來設置server記錄父進程(監控進程)PID的文件。


假設指定的不是絕對路徑,那麽將會被覺得是一個相對於ServerRoot的相對路徑。



ScoreBoardFile指令
語法:ScoreBoardFile file-path
這個指令用來設置存儲子進程協調數據的文件。Apache使用記分板(scoreboard)在父進程和子進程之間進行通信。

一些體系機構要求有一個文件來幫助通信。

假設未指定這個文件。Apache會首先嘗試在匿名共享內存中建立完整的記分板。假設失敗。將繼續嘗試使用基於文件的共享存儲器在磁盤上建立這個文件。若利用這個指令指定這個文件的位置,則Apache將總是在磁盤上建立這個文件。
將ScoreBoardFile放置在RAM DISK中對訪問速度有非常大幫助。

可是要註意放置的位置以及權限。

ServerRoot指令
語法:ServerRoot directory-path
這個指令用來設置Apacheserver所在的文件夾。

一般包括conf/、logs/等子文件夾。

其它配置文件的相對路徑一般都是基於此文件夾的。
比如:
ServerRoot “/usr/local/httpd/”

Apacheserver全局配置之資源限制配置篇

資源限制相關指令:
LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
RLimitCPU
RLimitMEM
RLimitNPROC
ThreadStackSize

LimitRequest*系列指令用來限制Apache在讀取client請求的過程中使用的資源數量。通過限制這些值,能夠減輕某些拒絕服務(DOS)攻擊。
RLimit*系列指令用來限制Apache子進程所派生的進程使用的資源數量。

通常。這些指令用來控制CGI腳本和SSI exec命令所使用的資源。
ThreadStackSize指令在某些平臺上用來控制堆棧大小。

LimitRequestBody指令

語法:LimitRequestBody bytes
默認值:LimitRequestBody 0
這個指令用來設置client發送的HTTP請求的最大字節數。LimitRequestBody指令能夠作用於整個server、特定文件夾、特定文件、特定位置。

假設client的請求超出了LimitRequestBody設置的值,那麽server會回應一個錯誤信息給client。而不會去處理這個請求。


Bytes在0(不限制)到2147483647(2GB)之間。
比方:你同意client將文件上傳到某個位置,而且希望將上傳文件的限制大小為500K,
LimitRequestBody 512000

LimitRequestFields指令

語法:LimitRequestFields number
默認:LimitRequestFields 100
這個指令用來設置client向server請求中HTTP請求頭域的數量。一般一個client請求頭域的數量非常少大於20。可是client的不同這個數字也將有非常大的差異。

這個常常取決於用戶配置他們的瀏覽器擴展以支持更具體的內容協商。可選的HTTP擴展常常使用請求頭域來實現。
number是一個0(不限制)到32767之間的整數。默認值為編譯時的常量DEFAULT_LIMIT_REQUEST_FIELDS(公布值為100)。

LimitRequestFieldsize指令

語法:LimitRequestFieldsize bytes
默認:LimitRequestFieldsize 8190
這個指令用來設置client發送的HTTP請求頭的最大字節數。一般來說。server須要此值夠大。以適應普通客戶的的不論什麽請求的頭域大小。頭域的大小一般與瀏覽器支持的內容協議有密切關系。
普通情況下,不要更改這個值,使用默認就可以。

LimitRequestLine指令

語法:LimitRequestLine bytes
默認:LimitRequestLine 8190
這個指令用來設置client發送的HTTP請求行的最大字節數。

請求行包含HTTP方法、URL、協議版本號等。

因此LimitRequestLine指令可以限制URL的長度,server會須要這個值足夠大以裝載它全部的資源名,包含可能在GET請求中所傳遞的查詢部分的全部信息。
普通情況下,不要更改這個值。使用默認就可以。



RLimitCPU指令

語法:RLimitCPU seconds | max [seconds|max]
默認:沒有定義,使用操作系統默認值
這個指令用來設置Apache子進程派生的進程占用CPU的最大秒數。
這裏能夠設置一個或者兩個參數。

第一個參數設置全部進程的軟資源限制,第二個參數設置最大資源限制。兩個參數均可設置為一個數值或者是“max”(表示設置為操作系統同意的最大值)。要增大此資源限制最大值須要以root執行server或是在初始化啟動語句中進行設置。
這個指令僅僅作用於Apache子進程所派生的進程,而不是Apache子進程本身。

這個範圍包含CGI腳本和SSI運行命令,不包含全部從Apache父進程派生出的進程。比方管道日誌。
CPU資源限制表示每進程占用的秒數。



RLimitMEM指令

語法:RLimitMEM bytes | max [bytes|max]
默認:沒有定義,使用操作系統默認值
這個指令用來設置Apache子進程派生的進程占用內存的最大字節數。


這裏能夠設置一個或者兩個參數。第一個參數設置全部進程的軟資源限制,第二個參數設置最大資源限制。

兩個參數均可設置為一個數值或者是“max”(表示設置為操作系統同意的最大值)。

要增大此資源限制最大值須要以root執行server或是在初始化啟動語句中進行設置。


這個指令僅僅作用於Apache子進程所派生的進程,而不是Apache子進程本身。

這個範圍包含CGI腳本和SSI運行命令。不包含全部從Apache父進程派生出的進程。比方管道日誌。
內存資源限制表示為每進程占用的字節數。



RLimitNPROC指令

語法:RLimitNPROC number | max [number|max]
默認:沒有定義,使用操作系統默認值
這個指令用來設置Apache子進程派生的進程數目。


這裏能夠設置一個或者兩個參數。

第一個參數設置全部進程的軟資源限制。第二個參數設置最大資源限制。

兩個參數均可設置為一個數值或者是“max”(表示設置為操作系統同意的最大值)。要增大此資源限制最大值須要以root執行server或是在初始化啟動語句中進行設置。
這個指令僅僅作用於Apache子進程所派生的進程。而不是Apache子進程本身。這個範圍包含CGI腳本和SSI運行命令,不包含全部從Apache父進程派生出的進程。比方管道日誌。


進程限制控制了每一個用戶的進程數。

ThreadStackSize指令

語法:ThreadStackSize size
默認:NetWare上為65536,其它平臺上等於操作系統默認值
這個指令用來設置處理client連接(包含調用模塊以協助處理)的線程同意使用的最大棧尺寸(字節)。
大多數情況下。操作系統默認的棧尺寸非常合理。可是在某些情況下。須要調整這個值:
在默認棧尺寸較小的平臺上(比方HP-UX)。Apache可能會在使用一些須要較大棧尺寸的第三方模塊時崩潰。

這種問題能夠通過將ThreadStackSize設置為一個較大的值來解決。這種調整應當只在第三方模塊提供者明白要求的情況下才須要,或者是您通過診斷確定是因為棧空間太小而導致崩潰。
在某些平臺上。假設默認的棧空間大於server執行所需空間,那麽將ThreadStackSize值減少到小於操作系統默認值能夠讓每一個進程中同意生成的最大線程數量添加。

這樣的類型的調整應該僅在測試環境中使用。而且對全部server進程進行充分的測試。由於處理某些罕見的請求須要較大的棧空間。一個非常小的server配置變化就有可能使得當前的ThreadStackSize設置變得不合適。

apacheserver全局配置具體解釋