httpd配置文件常用參數詳解

ServerRoot "/etc/httpd"

配置httpd進程的根目錄(運行目錄)

PidFile run/httpd.pid

定義httpd的pid文件


Timeout 60

定義客戶程序和服務器連接的超時間隔,超過這個時間間隔(秒)後服務器將斷開與客戶機的連接。




KeepAlive Off

定義是否啓用保持連接,默認關閉狀態。由於http是無狀態協議,一次請求(建立一次TCP連接)只能獲取一個資源,當頁面中包含多個資源的時候,就需要多次請求(建立多次TCP連接),這樣導致服務器性能下降。爲此定義了KeepAlive機制,可以定義在一定時間內或請求數在一定數量之內只需要建立一次TCP連接。

MaxKeepAliveRequests 100

一次保持連接的最大請求數

KeepAliveTimeout 15

一次保持連接的最長時間(秒)

<IfModule prefork.c>     #當httpd服務使用的profork模型的時候:

 StartServers      10    #默認啓動10個作業進程

 MinSpareServers    10    #空閒進程數不低於10個

 MaxSpareServers    20    #空閒進程數最大20個

 ServerLimit      256    #最多可以啓動256個進程

 MaxClients       256    #最大併發客戶端數爲256個

 MaxRequestsPerChild 4000 #每個進程可以處理4000個請求,超過此數目進程被殺死並重新創建

</IfModule>


需要注意的是:ServerLimit最大值爲20000個,並且:由於profork是單一線程的進程,所以每個進程在同一時間裏僅能處理一個請求(也就是一個請求一個進程),所以MaxClients的值要和ServerLimit一致。而且,profork的開銷比較大,不過穩定性比較強。

<IfModule worker.c>       #當httpd服務使用的是worker模型的時候

 StartServers       6    #默認啓動6個作業進程

 MaxClients       300    #最大併發客戶端數爲256個

 MinSpareThreads    25    #空閒線程的數量不低於25個

 MaxSpareThreads    75    #空閒線程數最大75個

 ThreadsPerChild    25    #每個進程默認啓動25個線程

 MaxRequestsPerChild  0   #每個進程可以處理的請求數不限制

</IfModule>


worker是一種基於線程的模型,一個進程內部可以啓動N個線程(最大20000個),每個線程處理一個客戶請求。理論上線程的開銷要小於進程,但是由於Linux本身對多線程特性的支持並不是太好,所以可能會導致多線程程序運行出問題的機率比單線程程序要大的多,而且一旦一個線程出現問題,可能會導致整個進程出現問題。這個模型用的比較少。

event模型:

  event模型是一個基於線程的、更高級的事件驅動模型,可以實現一個線程處理N個請求。不過由於2.2上面是測試,2.4的配置講解的時候我們再說。


Listen 80

監聽本機所有可用IP的80端口,也可以監聽特定IP:Listen 192.168.10.1:80

LoadModule [Module_Name] mod_NAME.so

動態加載模塊功能。httpd是一個模塊化的程序,其僅包含了一些核心功能模塊,其餘的模塊一律都是通過動態加載來完成,這樣可以保證httpd的功能儘可能不復雜,實現用戶需要使用哪種功能再調用。
Include conf.d/*.conf讀取/etc/httpd/conf目錄中所有以.conf結尾的文件,這裏爲相對路徑,相對於httpd程序的根目錄(/etc/httpd)

SetOutputFilter DEFLATE    #啓動壓縮過濾器DEFLATE

<IfModule mod_deflate.c>    #啓動了deflate壓縮模塊的時候:

  AddOutputFilterByType DEFLATE text/plain  #壓縮text/plain類型的文件

  AddOutputFilterByType DEFLATE text/html  #壓縮text/html類型的文件

  AddOutputFilterByType DEFLATE text/xml   #壓縮text/xml類型的文件

  AddOutputFilterByType DEFLATE text/javascript  #壓縮text/javascript類型的文件

  AddOutputFilterByType DEFLATE text/css  #壓縮text/css類型的文件

  AddOutputFilterByType DEFLATE application/xhtml+xml  #壓縮這個格式的

  ...

  #DeflateCompressionLevel 9  #指定壓縮級別爲9,這裏註釋起來了使用默認壓縮級別6

  # Netscape 4.x has some problems.

  BrowserMatch ^Mozilla/4 gzip-only-text/html #對火狐4.x的只使用gzip壓縮text/html

 

  # Netscape 4.06-4.08 have some more problems 

  BrowserMatch ^Mozilla/4\.0[678] no-gzip #對火狐4.06-4.08不使用gzip壓縮

 

  # MSIE masquerades as Netscape, but it is fine

  BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html 對IE使用gizp

</IfModule>


壓縮建議僅壓縮文本文件,支持的格式可以查看/etc/httpd/magic文件。

User apache   #作業進程運行者爲apache用戶

Group apache  #作業進程運行組爲apache組

UseCanonicalName {On|Off}

當啓用這個的時候,用戶輸入主機名後,他會重定向到ServerName的值

ServerName  www.xxx.com

域名

DocumentRoot "/var/www/html"

網頁文檔的根目錄

<Directory [~]"/var/www/html">  #定義/var/www/html目錄的屬性,如果啓用~號,支持正則表達式,這裏的[]代表是可選的參數

  Opitons None #定義選項參數,這裏爲空;選項有多個,下面會介紹

  Allowoverride None #認證類型,None表示爲默認的下面的Order的IP認證

  Order allow,deny  #特定的允許,默認爲拒絕

  #Allow from all  #允許所有,這裏註釋掉了;

  Allow from 172.16.100.0/24; #允許172.16.100.0/24這個網絡訪問,默認的拒絕

</Directory>


注:httpd 2.4中,IP控制項已經廢棄了Order(順序)、Allow from方式,而是全部使用Require all定義

   Require all denied  #拒絕所有

   Require all granted  #允許所有

   Require ip {具體IP|網絡地址}  #允許特定的IP或者網絡訪問

   Require not ip {具體IP|網絡地址}  #不允許特定的IP或者網絡訪問

   Require host {主機名|域名}  #允許特定的主機或域訪問

   Require not host {主機名|域名}  #拒絕特定的主機或域訪問

Options可以支持的參數:

  ExecCGI:允許使用mod_cgi模塊執行cgi腳本

  FollowSymblink:允許追蹤軟接文件

  SymLinksIfOwnerMatch:在鏈接文件屬主屬組與原始文件的屬主屬組相同時,允許跟隨符號鏈接所指向的文件

  Include:允許使用mod_inclue模塊實現服務器端包含(SSI)

  Index:如果沒有首頁文件,則啓動索引

  MultiViews:啓動多視圖功能

  ALL:啓用所有參數

<IfModule mod_userdir.c>  #如果啓用了用戶目錄模塊(用戶個人站):

    UserDir disabled    #禁止用戶創建個人站

    #UserDir public_html  #網頁文件目錄爲public_html

</IfModule>

DirectoryIndex index.html index.php設定默認首頁文件爲index.html或者index.php,如果有index.html就顯示這個文件,否則顯示index.php

<Files ~ "^\.ht">

    Order allow,deny

    Deny from all

    Satisfy All

</Files>

以 .ht開頭的文件權限。 ~支持正則表達式
TypesConfig /etc/mime.typesmime類型數據文件的位置在/etc/imie.types
DefaultType text/plain默認的MIME類型,當MIME不能確定時,使用text/plain

<IfModule mod_mime_magic.c>  #如果啓動了mime模塊

 #  MIMEMagicFile /usr/share/magic.mime 

    MIMEMagicFile conf/magic  #決定MIME類型的文件/etc/httpd/conf/magic

</IfModule>

ErrorLog logs/error_log錯誤日誌的位置爲/etc/httpd/logs/error_log,注意:/etc/httpd/logs這個目錄是/var/log/httpd/的軟連接
LogLevel warn記錄錯誤日誌的級別爲warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

定義combined塊的日誌格式:

  %h:爲客戶端主機IP ,host

  %l:小寫的L,不是1。定義遠端的主機名,一般都爲-

  %u:認證的用戶名,如果沒有開啓認證,則爲- ,username

  %t:接收到此請求的時間,time

  \"%r\":記錄請求報文的起始行,request

  %>s:響應的狀態碼,status

  %b:響應報文的大小(不包含首部),bytes

  \"{Referer}i\":用戶從哪個網頁跳轉過來的

  \"%{User-Agent}i\":用戶的代理軟件(就是瀏覽器軟件)  

CustomLog logs/access_log combined自定義日誌並使用combined塊,這裏是訪問日誌
ServerSignature Off隱藏Apache的敏感信息,如果爲on則是不隱藏,建議設置爲off
ServerTokens Prod顯示最少的OS信息,建議這樣設置

Alias /web "/www/"   #定義當用戶訪問http://host.com/web這個URL時指向/www目錄

<Directory "/www/">  #定義/www目錄的屬性,不再多解釋

    Options None

    AllowOverride None

    Order allow,deny

    allow from all

</Directory>


ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"定義CGI別名,允許執行CGI腳本的目錄別名
AddDefaultCharset UTF-8默認的字符集
NameVirtualHost *:80虛擬主機監聽的端口,在httpd-2.2需要使用虛擬主機必須開啓此選項,而httpd-2.4則已經取消此選項
<VirtualHost *:80>
    ServerName www.a.com
    DocumentRoot /www/docs/a.com
    <Directory "/www/docs/a.com">
        Options None
        Allowoverride AuthConfig
        AuthType basic
        AuthName "Authentication"
        AuthBasicProvider file
        AuthUserFile /etc/httpd/conf/.htpasswd
        Require valid-user
    </Directory>
    ErrorLog logs/a.com-error_log
    CustomLog logs/a.com-access_log common
</VirtualHost>
定義虛擬主機
<Location /server-status>  #定義一個URI,而不需要目錄

    SetHandler server-status  #啓動server-status功能,SetHandler是用來定義表示的功能

    Order deny,allow

    Allow from all

</Location>

<Directory "/usr/local/apache2/htdocs/cfan/pic/">
   RewriteEngine  on
   RewriteCond %{HTTP_REFERER} !^http://網站域名/.*$ [NC]
   RewriteRule .*\.(gif|jpg)$   http://代替圖標 [L]
</Directory>
Apache防盜鏈


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章