apache服務(wù)器全局配置詳解(全)
Apache服務(wù)器全局配置之服務(wù)器標(biāo)識配置篇
服務(wù)器標(biāo)識相關(guān)指令:
ServerName
ServerAdmin
ServerSignature
ServerTokens
UseCanonicalName
UseCanonicalPhysicalPort
ServerAdmin和ServerTokens指令控制有關(guān)服務(wù)器的哪些信息將出現(xiàn)在服務(wù)器生成的文檔中(如錯(cuò)誤消息)。ServerTokens指令設(shè)置服務(wù)器HTTP響應(yīng)頭字段的值。
ServerName、UseCanonicalName、 UseCanonicalPhysicalPort指令用來決定怎樣構(gòu)建自引用URL,譬如,某客戶端對一個(gè)目錄發(fā)出請求,但沒有包含目錄名最后的斜線"/",Apache將重定向客戶端到包含"/"的全名,以使客戶端可以正確解析文檔中的相對引用。
ServerName指令
語法:ServerName [scheme://] FQDN [:port]
這個(gè)指令用來設(shè)置服務(wù)器用于辨識自己的主機(jī)名和端口號。主要用于創(chuàng)建重定向URL。
例如,你的web服務(wù)器的主機(jī)名為example.bob.com,但你的web服務(wù)器同時(shí)在DNS服務(wù)器中擁有一個(gè)DNS別名www.bob.com。而你希望web服務(wù)器更顯著一點(diǎn),你可以在http.conf中使用ServerName指令來實(shí)現(xiàn):
ServerName www.bob.com:80
當(dāng)沒有指定ServerName時(shí),服務(wù)器會嘗試對IP地址進(jìn)行反向查詢來推斷主機(jī)名。如果在ServerName中沒有指定端口號,服務(wù)器會監(jiān)聽所有端口。為了加強(qiáng)可靠性和可預(yù)測性,應(yīng)該使用ServerName顯示的指定一個(gè)主機(jī)名和端口號。
如果使用的是基于域名的虛擬主機(jī),在<VirtualHost>段中的ServerName將是為了匹配這個(gè)虛擬主機(jī),在“Host:”請求頭中必須寫主機(jī)名。
ServerAdmin指令
語法:ServerAdmin email-address|URL
這個(gè)指令用來設(shè)置服務(wù)器返回給客戶端的錯(cuò)誤信息中包含的管理員郵件地址。便于用戶在收到錯(cuò)誤信息后能及時(shí)與管理員取得聯(lián)系。
ServerAdmin bob@126.com
ServerSignature指令
語法:ServerSignature . | Off | Email
默認(rèn):ServerSignature Off
這個(gè)指令用來配置服務(wù)器端生成文檔的頁腳(錯(cuò)誤信息、mod_proxy的FTP目錄列表、mod_info的輸出)。使用該指令來啟用這個(gè)頁腳主要在于處于一個(gè)代理服務(wù)器鏈中的時(shí)候,用戶基本無法辨識出究竟是鏈中的哪個(gè)服務(wù)器真正產(chǎn)生了返回的錯(cuò)誤信息。
http.conf中該指令默認(rèn)是Off的,這樣就沒有錯(cuò)誤行;使用On會簡單的增加一行關(guān)于服務(wù)器版本和正在提供服務(wù)的ServerName;
例如,我使用ServerSignature .后,在沒有打開web頁面時(shí)出現(xiàn)下面的信息:
Apache/2.2.11 (Unix) PHP/5.2.8 Server at 192.168.120.240 Port 80
對于2.0.44以后的版本,顯示詳細(xì)的服務(wù)器版本號將由ServerTokens指令控制。
ServerTokens指令
語法:ServerTokens Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full
默認(rèn):ServerTokens Full
這個(gè)指令用來控制服務(wù)器回應(yīng)給客戶端的“Server:”應(yīng)答頭是否包含關(guān)于服務(wù)器操作系統(tǒng)類型和編譯進(jìn)的模塊描述信息。
注意:在使用ServerTokens指令時(shí)要先啟用ServerSignature指令。
ServerTokens Prod[uctOnly]:服務(wù)器會發(fā)送(比如):Apache
Apache Server at 192.168.120.240 Port 80
ServerTokens Major:服務(wù)器會發(fā)送(比如):Apache/2
Apache/2 Server at 192.168.120.240 Port 80
ServerTokens Minor:服務(wù)器會發(fā)送(比如):Apache/2.2
Apache/2.2 Server at 192.168.120.240 Port 80
ServerTokens Min[imal]:服務(wù)器會發(fā)送(比如):Apache/2.2.11
Apache/2.2.11 Server at 192.168.120.240 Port 80
ServerTokens OS:服務(wù)器會發(fā)送(比如):Apache/2.2.11(Unix)
Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80
ServerTokens Full:服務(wù)器會發(fā)送(比如):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
默認(rèn):UseCanonicalName Off
這個(gè)指令用來構(gòu)造Apache的自引用URL(一個(gè)指回相同服務(wù)器的URL)。
UseCanonicalName .:會將ServerName設(shè)置的域名用于所有的自引用URL、SERVER_NAME、CGI中的SERVER_PORT。比如:如果你的web服務(wù)器有自己的域名,并且在DNS中有對應(yīng)的NS記錄,而且httpd.conf將ServerName設(shè)置了域名,那么你在瀏覽器中輸入http://192.168.120.240/bbs,它會自動將這個(gè)IP地址變成其對應(yīng)的域名,比如http://www.bob.com/bbs/ 。此時(shí),如果其他客戶端的電腦不能正確的解析web服務(wù)器的這個(gè)域名,那么在訪問這個(gè)web服務(wù)器時(shí)將會出現(xiàn)問題。因?yàn)閣eb服務(wù)器會自動將IP地址轉(zhuǎn)變成域名。
UseCanonicalName Off:如果客戶端提供了主機(jī)名和端口,Apache將會使用客戶端提供的這些信息來構(gòu)建自引用URL。這些值與用于實(shí)現(xiàn)基于域名的虛擬主機(jī)的值相同,并且對于同樣的客戶端可用。CGI變量SERVER_NAME和SERVER_PORT也會由客戶端提供的值來構(gòu)建。
UseCanonicalName DNS:本設(shè)置用于為大量基于IP的虛擬主機(jī)支持那些不提供“Host:“頭的瀏覽器使用。使用這個(gè)選項(xiàng)時(shí),Apache將對客戶端連入的服務(wù)器的IP地址進(jìn)行DNS反向解析,以構(gòu)建自引用URL。
UseCanonicalPhysicalPort指令
語法:UseCanonicalPhysicalPort . | Off
默認(rèn):UseCanonicalPhysicalPort Off
這個(gè)指令用來配置服務(wù)器如何確定自己的端口。
UseCanonicalPhysicalPort .:Apache有可能在構(gòu)造服務(wù)器的規(guī)范端口時(shí)為了符合UseCanonicalName指令而使用實(shí)際的物理端口號。
UseCanonicalPhysicalPort Off:Apache不會使用實(shí)際的物理端口號,而是依賴所有已經(jīng)配置的信息來構(gòu)造一個(gè)合法的端口號。
注意:
決定使用物理端口號的次序如下:
UseCanonicalName .
Servername指定的端口號
物理端口號
默認(rèn)端口號
UseCanonicalName Off | DNS
“Host:”請求頭提供的端口號
物理端口號
Servername指定的端口號
默認(rèn)端口號
在UseCanonicalPhysicalPort Off的情況下,物理端口號將會從上述順序中剔除。
Apache服務(wù)器全局配置之文件定位配置篇
文件定位相關(guān)指令:
CoreDumpDirectory
DocumentRoot
ErrorLog
LockFile
PidFile
ScoreBoardFile
ServerRoot
這些指令控制Apache正常工作所需的各種文件的定位。如果路徑名不以斜線“/”開頭,那么就認(rèn)為該文件是相對于ServerRoot的相對路徑。
CoreDumpDirectory指令
語法:CoreDumpDirectory directory-path
這個(gè)指令用來控制Apache使用的內(nèi)核轉(zhuǎn)儲目錄,該轉(zhuǎn)儲目錄默認(rèn)位于“ServerRoot”下。因?yàn)檫@個(gè)目錄通常對于運(yùn)行服務(wù)器的用戶是不可寫的,內(nèi)核轉(zhuǎn)儲一般也不會寫入內(nèi)容。如果你在調(diào)試中需要內(nèi)核轉(zhuǎn)儲,那么你可以用這個(gè)指令來指定另外一個(gè)目錄。
DocumentRoot指令
語法:DocumentRoot directory-path
這個(gè)指令用來設(shè)置httpd提供服務(wù)的目錄。在沒有使用類似Alias這樣的指令的情況下,服務(wù)器會將請求中的URL附加到DocumentRoot后面以構(gòu)成指向文檔的路徑。
例如:
DocumentRoot “/usr/local/httpd/htdocs”
那么在訪問http://192.168.120.240/bbs/index.html時(shí),實(shí)際上就是訪問/usr/loca/httpd/htdocs/bbs/index.html。
如果directory-path不是絕對路徑,則就會被假定為相對于ServerRoot的路徑。
例如:
ServerRoot “/usr/local/httpd/”
DocumentRoot “htdocs”
那么在訪問http://192.168.120.240/bbs/index.html時(shí),實(shí)際上還是會被定位到/usr/loca/httpd/htdocs/bbs/index.html。
ErrorLog指令
語法:ErrorLog file-path | syslog[:facility]
默認(rèn):ErrorLog “l(fā)ogs/error_log”
這個(gè)指令用來設(shè)置當(dāng)服務(wù)器遇到錯(cuò)誤時(shí)記錄錯(cuò)誤日志的文件。如果file-path不是以/開頭的絕對路徑,那么將會被認(rèn)為是一個(gè)相對于ServerRoot的相對路徑。
LockFile指令
語法:LockFile filename
這個(gè)指令設(shè)置當(dāng)AcceptMutex指令的值是fcntl或flock的時(shí)候,Apache使用的鎖文件的位置。一般保持默認(rèn)值。改變默認(rèn)值的主要原因是logs目錄位于一個(gè)NFS文件系統(tǒng)上,因?yàn)殒i文件必須位于本地磁盤上。主服務(wù)器進(jìn)程的PID會自動添加到文件名后面。
注意:不要將該鎖文件放在任何人都有寫權(quán)限的目錄中,因?yàn)閯e人可以通過建立一個(gè)與服務(wù)器企圖建立的鎖文件同名的文件,來阻止服務(wù)器啟動。
PidFile指令
語法:PidFile filename
默認(rèn):PidFile “l(fā)ogs/httpd.pid”
這個(gè)指令用來設(shè)置服務(wù)器記錄父進(jìn)程(監(jiān)控進(jìn)程)PID的文件。
如果指定的不是絕對路徑,那么將會被認(rèn)為是一個(gè)相對于ServerRoot的相對路徑。
ScoreBoardFile指令
語法:ScoreBoardFile file-path
這個(gè)指令用來設(shè)置存儲子進(jìn)程協(xié)調(diào)數(shù)據(jù)的文件。Apache使用記分板(scoreboard)在父進(jìn)程和子進(jìn)程之間進(jìn)行通信。一些體系機(jī)構(gòu)要求有一個(gè)文件來幫助通信。如果未指定這個(gè)文件,Apache會首先嘗試在匿名共享內(nèi)存中建立完整的記分板。如果失敗,將繼續(xù)嘗試使用基于文件的共享存儲器在磁盤上建立這個(gè)文件。若利用這個(gè)指令指定這個(gè)文件的位置,則Apache將總是在磁盤上建立這個(gè)文件。
將ScoreBoardFile放置在RAM DISK中對訪問速度有很大幫助。但是要注意放置的位置以及權(quán)限。
ServerRoot指令
語法:ServerRoot directory-path
這個(gè)指令用來設(shè)置Apache服務(wù)器所在的目錄。一般包含conf/、logs/等子目錄。其他配置文件的相對路徑一般都是基于此目錄的。
例如:
ServerRoot “/usr/local/httpd/”
Apache服務(wù)器全局配置之資源限制配置篇
資源限制相關(guān)指令:
LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
RLimitCPU
RLimitMEM
RLimitNPROC
ThreadStackSize
LimitRequest*系列指令用來限制Apache在讀取客戶端請求的過程中使用的資源數(shù)量。通過限制這些值,可以減輕某些拒絕服務(wù)(DOS)攻擊。
RLimit*系列指令用來限制Apache子進(jìn)程所派生的進(jìn)程使用的資源數(shù)量。通常,這些指令用來控制CGI腳本和SSI exec命令所使用的資源。
ThreadStackSize指令在某些平臺上用來控制堆棧大小。
LimitRequestBody指令
語法:LimitRequestBody bytes
默認(rèn)值:LimitRequestBody 0
這個(gè)指令用來設(shè)置客戶端發(fā)送的HTTP請求的最大字節(jié)數(shù)。LimitRequestBody指令可以作用于整個(gè)服務(wù)器、特定目錄、特定文件、特定位置。如果客戶端的請求超出了LimitRequestBody設(shè)置的值,那么服務(wù)器會回應(yīng)一個(gè)錯(cuò)誤信息給客戶端,而不會去處理這個(gè)請求。
Bytes在0(不限制)到2147483647(2GB)之間。
比如:你允許客戶端將文件上傳到某個(gè)位置,并且希望將上傳文件的大小限制為500K,
LimitRequestBody 512000
LimitRequestFields指令
語法:LimitRequestFields number
默認(rèn):LimitRequestFields 100
這個(gè)指令用來設(shè)置客戶端向服務(wù)器請求中HTTP請求頭域的數(shù)量。一般一個(gè)客戶端請求頭域的數(shù)量很少大于20,但是客戶端的不同這個(gè)數(shù)字也將有很大的差異。這個(gè)經(jīng)常取決于用戶配置他們的瀏覽器擴(kuò)展以支持更詳細(xì)的內(nèi)容協(xié)商。可選的HTTP擴(kuò)展經(jīng)常使用請求頭域來實(shí)現(xiàn)。
number是一個(gè)0(不限制)到32767之間的整數(shù)。默認(rèn)值為編譯時(shí)的常量DEFAULT_LIMIT_REQUEST_FIELDS(發(fā)布值為100)。
LimitRequestFieldsize指令
語法:LimitRequestFieldsize bytes
默認(rèn):LimitRequestFieldsize 8190
這個(gè)指令用來設(shè)置客戶端發(fā)送的HTTP請求頭的最大字節(jié)數(shù)。一般來說,服務(wù)器需要此值夠大,以適應(yīng)普通客戶的的任何請求的頭域大小。頭域的大小一般與瀏覽器支持的內(nèi)容協(xié)議有密切關(guān)系。
一般情況下,不要更改這個(gè)值,使用默認(rèn)即可。
LimitRequestLine指令
語法:LimitRequestLine bytes
默認(rèn):LimitRequestLine 8190
這個(gè)指令用來設(shè)置客戶端發(fā)送的HTTP請求行的最大字節(jié)數(shù)。請求行包括HTTP方法、URL、協(xié)議版本等。因此LimitRequestLine指令能夠限制URL的長度,服務(wù)器會需要這個(gè)值足夠大以裝載它所有的資源名,包括可能在GET請求中所傳遞的查詢部分的所有信息。
一般情況下,不要更改這個(gè)值,使用默認(rèn)即可。
RLimitCPU指令
語法:RLimitCPU seconds | max [seconds|max]
默認(rèn):未定義,使用操作系統(tǒng)默認(rèn)值
這個(gè)指令用來設(shè)置Apache子進(jìn)程派生的進(jìn)程占用CPU的最大秒數(shù)。
這里可以設(shè)置一個(gè)或者兩個(gè)參數(shù)。第一個(gè)參數(shù)設(shè)置所有進(jìn)程的軟資源限制,第二個(gè)參數(shù)設(shè)置最大資源限制。兩個(gè)參數(shù)均可設(shè)置為一個(gè)數(shù)值或者是“max”(表示設(shè)置為操作系統(tǒng)允許的最大值)。要增大此資源限制最大值需要以root運(yùn)行服務(wù)器或是在初始化啟動語句中進(jìn)行設(shè)置。
這個(gè)指令只作用于Apache子進(jìn)程所派生的進(jìn)程,而不是Apache子進(jìn)程本身。這個(gè)范圍包括CGI腳本和SSI執(zhí)行命令,不包括所有從Apache父進(jìn)程派生出的進(jìn)程。比如管道日志。
CPU資源限制表示每進(jìn)程占用的秒數(shù)。
RLimitMEM指令
語法:RLimitMEM bytes | max [bytes|max]
默認(rèn):未定義,使用操作系統(tǒng)默認(rèn)值
這個(gè)指令用來設(shè)置Apache子進(jìn)程派生的進(jìn)程占用內(nèi)存的最大字節(jié)數(shù)。
這里可以設(shè)置一個(gè)或者兩個(gè)參數(shù)。第一個(gè)參數(shù)設(shè)置所有進(jìn)程的軟資源限制,第二個(gè)參數(shù)設(shè)置最大資源限制。兩個(gè)參數(shù)均可設(shè)置為一個(gè)數(shù)值或者是“max”(表示設(shè)置為操作系統(tǒng)允許的最大值)。要增大此資源限制最大值需要以root運(yùn)行服務(wù)器或是在初始化啟動語句中進(jìn)行設(shè)置。
這個(gè)指令只作用于Apache子進(jìn)程所派生的進(jìn)程,而不是Apache子進(jìn)程本身。這個(gè)范圍包括CGI腳本和SSI執(zhí)行命令,不包括所有從Apache父進(jìn)程派生出的進(jìn)程。比如管道日志。
內(nèi)存資源限制表示為每進(jìn)程占用的字節(jié)數(shù)。
RLimitNPROC指令
語法:RLimitNPROC number | max [number|max]
默認(rèn):未定義,使用操作系統(tǒng)默認(rèn)值
這個(gè)指令用來設(shè)置Apache子進(jìn)程派生的進(jìn)程數(shù)目。
這里可以設(shè)置一個(gè)或者兩個(gè)參數(shù)。第一個(gè)參數(shù)設(shè)置所有進(jìn)程的軟資源限制,第二個(gè)參數(shù)設(shè)置最大資源限制。兩個(gè)參數(shù)均可設(shè)置為一個(gè)數(shù)值或者是“max”(表示設(shè)置為操作系統(tǒng)允許的最大值)。要增大此資源限制最大值需要以root運(yùn)行服務(wù)器或是在初始化啟動語句中進(jìn)行設(shè)置。
這個(gè)指令只作用于Apache子進(jìn)程所派生的進(jìn)程,而不是Apache子進(jìn)程本身。這個(gè)范圍包括CGI腳本和SSI執(zhí)行命令,不包括所有從Apache父進(jìn)程派生出的進(jìn)程。比如管道日志。
進(jìn)程限制控制了每個(gè)用戶的進(jìn)程數(shù)。
ThreadStackSize指令
語法:ThreadStackSize size
默認(rèn):NetWare上為65536,其他平臺上等于操作系統(tǒng)默認(rèn)值
這個(gè)指令用來設(shè)置處理客戶端連接(包括調(diào)用模塊以協(xié)助處理)的線程允許使用的最大棧尺寸(字節(jié))。
大多數(shù)情況下,操作系統(tǒng)默認(rèn)的棧尺寸很合理。但是在某些情況下,需要調(diào)整這個(gè)值:
在默認(rèn)棧尺寸較小的平臺上(比如HP-UX),Apache可能會在使用一些需要較大棧尺寸的第三方模塊時(shí)崩潰。這樣的問題可以通過將ThreadStackSize設(shè)置為一個(gè)較大的值來解決。這種調(diào)整應(yīng)當(dāng)僅僅在第三方模塊提供者明確要求的情況下才需要,或者是您通過診斷確定是由于??臻g太小而導(dǎo)致崩潰。
在某些平臺上,如果默認(rèn)的??臻g大于服務(wù)器運(yùn)行所需空間,那么將ThreadStackSize值降低到小于操作系統(tǒng)默認(rèn)值可以讓每個(gè)進(jìn)程中允許生成的最大線程數(shù)量增加。這種類型的調(diào)整應(yīng)該僅在測試環(huán)境中使用,并且對所有服務(wù)器進(jìn)程進(jìn)行充分的測試,因?yàn)樘幚砟承┖币姷恼埱笮枰^大的??臻g。一個(gè)很小的服務(wù)器配置變化就有可能使得當(dāng)前的ThreadStackSize設(shè)置變得不合適。
- Mac版PhpStorm之XAMPP整合apache服務(wù)器配置的圖文教程詳解
- CentOS 6.6安裝配置LAMP服務(wù)器(Apache+PHP5+MySQL)
- 如何配置Apache服務(wù)器中的虛擬機(jī)
- Apache服務(wù)器中.htaccess文件的實(shí)用配置示例集錦
- PHP開發(fā)Apache服務(wù)器配置
- Apache服務(wù)器一個(gè)IP多個(gè)站點(diǎn)的配置方法示例
- 在Windows服務(wù)器下用Apache和mod_wsgi配置Python應(yīng)用的教程
- Apache服務(wù)器主配置文件httpd.conf詳解
- CentOS 6.4安裝配置LAMP服務(wù)器(Apache+PHP5+MySQL)
- 跨域請求 Apache 服務(wù)器配置的方法
相關(guān)文章
Apache JMeter 5.5 下載安裝及設(shè)置中文圖文教程
這篇文章主要介紹了Apache JMeter 5.5 下載安裝以及設(shè)置中文教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02Linux系統(tǒng)網(wǎng)卡設(shè)置教程
這篇文章主要介紹了Linux系統(tǒng)網(wǎng)卡的設(shè)置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06詳解Linux系統(tǒng)配置nginx的負(fù)載均衡
這篇文章主要介紹了詳解Linux系統(tǒng)配置nginx的負(fù)載均衡的相關(guān)資料,這里對負(fù)載均衡的幾種方式進(jìn)行了講解并附NGINX配置文件,需要的朋友可以參考下2017-03-03windows10安裝ubuntu20.04雙系統(tǒng)詳細(xì)圖文教程
這篇文章主要介紹了windows10安裝ubuntu20.04雙系統(tǒng)詳細(xì)圖文教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06