Apache配置文件詳解及優化


 Apache配置文件詳解及優化

ServerTokens OS

#這個項目僅僅是在告知客戶端我們服務器的版本和操作系統而已,不需要改動他

#如果不在乎你的系統信息被遠程用戶查詢到,則可以將這個項目注釋掉(不建議)

ServerRoot  "/etc/httpd"

#服務器設置的最頂層目錄,有點類似於chroot那種感覺。包括logs , modules等

#的數據都應該要放置在此目錄下面(如果這些配置沒有聲明成絕對路徑的話)

PidFile run/httpd.pid

#放置PID的文件,可方便apache軟件的管理。只有相對路徑考慮ServerRoot設置值,

#所以文件在/etc/httpd/run/httpd.pid

Timeout 60

#不論接收或發送,當持續連接等待超過60秒則該次連接就中斷

#一般來說,此數值在300秒左右即可,不需要修改這個原始值

KeepAlive Off

#這里最好把默認值“Off”修改為“On”

#這里表示是否允許持續性的連接,也就是一個TCP連接可以具有多個文件資料傳送的要求

#舉例來說,如果你的網頁內含有很多圖片文件,那么這一次連接就會將所有的數據傳送完

#而不必每一個圖片都需要進行一次TCP連接。

MaxKeepAliveRequests 100

#可以將默認的100改成500或更高

#與上一個設置的值KeepAlive有關,當KeepAlive的值設置為On的時候,這個數值可以決定

#該次連接能夠傳輸的最大傳輸數量。為了提高效率則可以改大一點。0代表不限制

KeepAliveTimeout 65

#在KeepAlive設置為“On”的情況下,該次連接在最后一次傳輸后等待延遲的秒數

#當超過該秒數的時候該連接中斷。保持默認值15即可,如果設置的值太高(等待時間較長)

#在較忙碌的系統上面將會有較多的Apache程序占用資源,可能有效率方面的問題。

<IfModule prefork.c>

StartServers      8                      #啟動Apache的時候,喚醒幾個PID來處理服務的。

#Apache使用了進程預派生的技術來處理請求,大大提高了響應速度,

MinSpareServers   5                          #最小預備使用的PID數量

MaxSpareServers   20                       #最大預備使用的PID數量

ServerLimit      4096                       #服務器的限制

MaxClients      4096                        #最多可以有多少個客戶端同時連接到Apache

#最大的同時連接數量,也就是process不會超過這一數值。

#這個MaxClients設置值可以控制同時連上www服務器的總連接要求數量,

#也可以將其看作是最高實時在線人數。不過要注意的是:這個值並非越大越好

#因為他會消耗物理內存(與process有關),所以如果你設置太高導致超出物理內存

#能夠容許的范圍,那么效率就會大大降低(因為會跑SWAP),此外,MaxClients也在

#Apache編譯的時候就指定最大值了,所以你也無法超出系統最大值,除非你重新編譯Apache

MaxRequestsPerChild  4000

#每個程序能夠提供的最大傳輸次數要求。舉例來說:如果有個用戶連上服務器之后,

#要求數百個網頁,當他的要求數量超過這個值的時候則該程序會被丟棄,

#另外切換一個新程序。這個設置可以有效地管理每個process在系統上存活的時間。

#根據觀察所得,新程序的效果較好。

</IfModule>

<IfModule worker.c>

StartServers        8

MaxClients         4000

MinSpareThreads     25

MaxSpareThreads     75

ThreadsPerChild     75

MaxRequestsPerChild  0

</IfModule>

#上面的prefork和worker其實就是兩個與服務器連接資源有關的設置項目。

#默認的項目配置對於一般中小型網站來說已經很夠用了,不過如果網站的流量

#比較大,也可以修訂一下里面的數值。這兩個模塊都是用在提供用戶連接資源,

#設置的數值越大代表系統會啟動越多的程序來提供Apache的服務,反映速度就比較快

 

#Redhat和CentOS將這兩個模塊分別放到了不同的執行文件中,分別是

#     |- /usr/sbin/httpd  使用prefork模塊

#     |- /usr/sbin/httpd.worker  使用worker模塊

#/etc/sysconfig/httpd這個文件決定了Apache使用哪一個模塊,可以通過。

#修改這個文件來切換不同的工作模式。

prefork和worker模式的比較
prefork模式使用多個子進程,每個子進程只有一個線程。每個進程在某個確定的時間只能維持一個連接。在大多數平台上,Prefork MPM在效率上要比Worker MPM要高,但是內存使用大得多。prefork的無線程設計在某些情況下將比worker更有優勢:它可以使用那些沒有處理好線程安全的第三方模塊,並且對於那些線程調試困難的平台而言,它也更容易調試一些。

worker模式使用多個子進程,每個子進程有多個線程。每個線程在某個確定的時間只能維持一個連接。通常來說,在一個高流量的HTTP服務器上,Worker MPM是個比較好的選擇,因為Worker MPM的內存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一個線程崩潰,整個進程就會連同其所有線程一起"死掉".由於線程共享內存空間,所以一個程序在運行時必須被系統識別為"每個線程都是安全的"。

LoadModule cgi_module modules/mod_cgi.so

LoadModule version_module modules/mod_version.so

#Apache提供了非常多的模塊供我們使用,以上就是加載的模塊

Include conf.d/*.conf

ServerAdmin root@localhost

#系統管理員的郵箱,當網站出現問題的時候,錯誤信息會顯示的聯系郵箱

DocumentRoot   "/var/www/html"

#上面這一行的配置指定了放置首頁的目錄

<Directory />

    Options FollowSymLinks

    AllowOverride None

</Directory>

#Directory指定后面的路徑是系統中的絕對路徑

#這個設置是針對www服務器的默認環境而來的,因為是針對“/”的設置

#建議保留上面的默認值

<Directory "/var/www/html">

#使用Directory指定了一個絕對路徑的目錄

Options -Indexes FollowSymLinks

#Options(目錄參數)

#此設置值表示在這個目錄內能夠讓Apache進行的操作,也就是針對Apache的程序的權限設置。

#主要的參數值有:

#     Indexes:如果在此目錄下找不到首頁文件(默認為index.html)時,

#     就顯示整個目錄下的文件名,至於首頁文件名則與DirectoryIndex設置的值有關

#     建議注釋掉Indexes

#     FollowSymLinks:這是Fllow Symolic Links的縮寫,字面意義是讓連接文件可以生效。

#     我們知道首頁的目錄是在/var/www/html,既然是WWW的根目錄,理論上就像被chroot

#     一般。一般說來說被chroot的程序無法離開其目錄,也就是說,默認的情況下,你在

#     /var/www/html下面的連接文件只要鏈接到非此目錄的其他地方,則該連接文件默認是失效的。

#     但是使用這個設置可以讓鏈接有效的離開本目錄

#     ExecCGI:讓此目錄具有執行CGI的權限,非常重要。舉例來說,OpenWebMail使用了

#     很多Perl程序,你要讓OpenWebMail可以執行,就需要在該程序所在目錄擁有ExecCGI

#     的權限才行。但是要注意:不要讓所有的目錄均可以使用ExecCGI

#     Includes:讓一些Server-Side Include程序可以運行。建議可以加上去

#     MultiViews:這個有點像是多國語言的支持,與語言數據有關。在錯誤信息的回報內容中

#     最常見,在同一台主機中,可以依據客戶端的語言而給予不同的語言顯示。默認在回報

#     信息中存在,你可以檢查一下/var/www/error/目錄下的數據。

AllowOverride None

#允許覆蓋參數功能

#表示是否允許額外配置文件.htaccess的某些參數覆蓋。我們可以在httpd.conf內設置好所有的權限

#不過這樣一來,若用戶自己的個人網頁想要修改權限時將會對管理員造成困擾。因此,Apache默認

#可以讓用戶以目錄下的.htaccess文件內覆蓋<Direcoty>內的某些功能參數。這個項目則是在規定

#.htaccess可以覆蓋的權限類型有哪些。常見的有以下幾種:

#     ALL:全部的權限均可以覆蓋

#     AuthConfig:僅有網頁認證(帳號與密碼)可以覆蓋

#     Indexes:僅允許Indexes方面的覆蓋

#     Limits:允許用戶利用Allow、Deny與Order管理可瀏覽的權限

#     None:不可覆蓋,也就是讓.htaccess文件失效

#使用.htaccess會嚴重影響到Apache的性能,如果不是特殊需要,建議關閉

#

# Controls who can get stuff from this server.

#

    Order allow,deny

    Allow from all

#能否登陸瀏覽的權限

#決定此目錄是否可被Apache的PID所瀏覽的權限設置。

#能否被瀏覽主要有兩種判斷的方式:

#     deny,allow  以deny優先處理,但沒有寫入規則的默認為allow (可以理解拒絕所有,允許特定)

#     allow,deny  以allow為優先處理,但是沒有寫入規則的默認為deny  (可以理解允許所有,拒絕特定)

#所以在默認的情況下,因為是allow,deny 所以默認為deny(不可瀏覽)

#不過在下一行有個allow from all,allow優先處理,因此全部客戶端均可瀏覽

#舉個例子來說,我們要允許所有人訪問除了192.168.61.61
#Order allow,deny
#allow from all
#deny 192.168.61.61
#以上這個例子很明顯是允許所有拒絕特定的配置
#第二行定義了允許的規則,開放所有
#第三行定義了拒絕的規則,拒絕了一個IP,這個IP包含在第二行的all當中,
#所以它的權限就默認由最后一行配置決定,最后一行是deny,所以61.61被成功被拒之門外


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM