綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門(mén)排行|軟件分類(lèi)|軟件專(zhuān)題|廠商大全

綠色資源網(wǎng)

技術(shù)教程
您的位置:首頁(yè)服務(wù)器類(lèi)Web服務(wù)器 → Apache 的 httpd.conf 詳解(很實(shí)用)

Apache 的 httpd.conf 詳解(很實(shí)用)

我要評(píng)論 2009/10/15 12:05:14 來(lái)源:綠色資源網(wǎng) 編輯:綠色資源站 [ ] 評(píng)論:0 點(diǎn)擊:1279次

  ServerRoot “/usr/local“
  
    ServerRoot用于指定守護(hù)進(jìn)程httpd的運(yùn)行目錄,httpd在啟動(dòng)之后將自動(dòng)將進(jìn)程的當(dāng)前目錄改變?yōu)檫@個(gè)目錄,因此如果設(shè)置文件中指定的文件或目錄是相對(duì)路徑,那么真實(shí)路徑就位于這個(gè)ServerR oot定義的路徑之下。
  
  ScoreBoardFile /var/run/httpd.scoreboard
  
    httpd使用ScoreBoardFile來(lái)維護(hù)進(jìn)程的內(nèi)部數(shù)據(jù),因此通常不需要改變這個(gè)參數(shù),除非管理員想在一臺(tái)計(jì)算機(jī)上運(yùn)行幾個(gè)Apache服務(wù)器,這時(shí)每個(gè)Apache服務(wù)器都需要獨(dú)立的設(shè)置文件htt pd.conf,并使用不同的ScoreBoardFile。
  
  #ResourceConfig conf/srm.conf
  #AccessConfig conf/access.conf
  
    這兩個(gè)參數(shù)ResourceConfig和AccessConfig,就用于和使用srm.conf和access.conf設(shè)置文件的老版本Apache兼容。如果沒(méi)有兼容的需要,可以將對(duì)應(yīng)的設(shè)置文件指定為/dev/null,這將表示不存在其他設(shè)置文件,而僅使用httpd.conf一個(gè)文件來(lái)保存所有的設(shè)置選項(xiàng)。
  
  PidFile /var/run/httpd.pid
  
    PidFile指定的文件將記錄httpd守護(hù)進(jìn)程的進(jìn)程號(hào),由于httpd能自動(dòng)復(fù)制其自身,因此系統(tǒng)中有多個(gè)httpd進(jìn)程,但只有一個(gè)進(jìn)程為最初啟動(dòng)的進(jìn)程,它為其他進(jìn)程的父進(jìn)程,對(duì)這個(gè)進(jìn)程發(fā)送信號(hào)將影響所有的httpd進(jìn)程。PidFILE定義的文件中就記錄httpd父進(jìn)程的進(jìn)程號(hào)。
  
  Timeout 300
  
    Timeout定義客戶(hù)程序和服務(wù)器連接的超時(shí)間隔,超過(guò)這個(gè)時(shí)間間隔(秒)后服務(wù)器將斷開(kāi)與客戶(hù)機(jī)的連接。
  
  KeepAlive On
  
    在HTTP 1.0中,一次連接只能作傳輸一次HTTP請(qǐng)求,而KeepAlive參數(shù)用于支持HTTP 1.1版本的一次連接、多次傳輸功能,這樣就可以在一次連接中傳遞多個(gè)HTTP請(qǐng)求。雖然只有較新的瀏覽器才支持這個(gè)功能,但還是打開(kāi)使用這個(gè)選項(xiàng)。
  
  MaxKeepAliveRequests 100
  
    MaxKeepAliveRequests為一次連接可以進(jìn)行的HTTP請(qǐng)求的最大請(qǐng)求次數(shù)。將其值設(shè)為0將支持在一次連接內(nèi)進(jìn)行無(wú)限次的傳輸請(qǐng)求。事實(shí)上沒(méi)有客戶(hù)程序在一次連接中請(qǐng)求太多的頁(yè)面,通常達(dá)不到這個(gè)上限就完成連接了。
  
  KeepAliveTimeout 15
  
    KeepAliveTimeout測(cè)試一次連接中的多次請(qǐng)求傳輸之間的時(shí)間,如果服務(wù)器已經(jīng)完成了一次請(qǐng)求,但一直沒(méi)有接收到客戶(hù)程序的下一次請(qǐng)求,在間隔超過(guò)了這個(gè)參數(shù)設(shè)置的值之后,服務(wù)器就斷開(kāi)連接。
  
  ThreadsPerChild 50
  設(shè)置服務(wù)器使用進(jìn)程的數(shù)目。
  # 這是以服務(wù)器的響應(yīng)速度為準(zhǔn)的, 數(shù)目太大則會(huì)變慢
  
  MaxRequestsPerChild 30
  
    使用子進(jìn)程的方式提供服務(wù)的Web服務(wù),常用的方式是一個(gè)子進(jìn)程為一次連接服務(wù),這樣造成的問(wèn)題就是每次連接都需要生成、退出子進(jìn)程的系統(tǒng)操作,使得這些額外的處理過(guò)程占據(jù)了計(jì)算機(jī)的大量處理能力。因此最好的方式是一個(gè)子進(jìn)程可以為多次連接請(qǐng)求服務(wù),這樣就不需要這些生成、退出進(jìn)程的系統(tǒng)消耗,Apache就采用了這樣的方式,一次連接結(jié)束后,子進(jìn)程并不退出,而是停留在系統(tǒng)中等待下一次服務(wù)請(qǐng)求,這樣就極大的提高了性能。
  
    但由于在處理過(guò)程中子進(jìn)程要不斷的申請(qǐng)和釋放內(nèi)存,次數(shù)多了就會(huì)造成一些內(nèi)存垃圾,就會(huì)影響系統(tǒng)的穩(wěn)定性,并且影響系統(tǒng)資源的有效利用。因此在一個(gè)副本處理過(guò)一定次數(shù)的請(qǐng)求之后,就可以讓這個(gè)子進(jìn)程副本退出,再?gòu)脑嫉膆tt pd進(jìn)程中重新復(fù)制一個(gè)干凈的副本,這樣就能提高系統(tǒng)的穩(wěn)定性。這樣,每個(gè)子進(jìn)程處理服務(wù)請(qǐng)求次數(shù)由MaxRe questPerChild定義。 缺省的設(shè)置值為30,這個(gè)值對(duì)于具備高穩(wěn)定性特點(diǎn)的FreeBSD系統(tǒng)來(lái)講是過(guò)于保守的設(shè)置,可以設(shè)置為1000甚至更高,設(shè)置為0支持每個(gè)副本進(jìn)行無(wú)限次的服務(wù)處理。
  為了安全,設(shè)置為零
  
  #Listen 3000
  #Listen 12.34.56.78:80
  #BindAddress *
  
    Listen參數(shù)可以指定服務(wù)器除了監(jiān)視標(biāo)準(zhǔn)的80端口之外,還監(jiān)視其他端口的HTTP請(qǐng)求。由于FreeBSD系統(tǒng)可以同時(shí)擁有多個(gè)IP地址,因此也可以指定服務(wù)器只聽(tīng)取對(duì)某個(gè)BindAddress< /B>的IP地址的HTTP請(qǐng)求。如果沒(méi)有配置這一項(xiàng),則服務(wù)器會(huì)回應(yīng)對(duì)所有IP的請(qǐng)求。
  
    即使使用了BindAddress參數(shù),使得服務(wù)器只回應(yīng)對(duì)一個(gè)IP地址的請(qǐng)求,但是通過(guò)使用擴(kuò)展的Listen參數(shù),仍然可以讓HTTP守護(hù)進(jìn)程回應(yīng)對(duì)其他IP地址的請(qǐng)求。此時(shí)Listen參數(shù)的用法與上面的第二個(gè)例子相同。這種比較復(fù)雜的用法主要用于設(shè)置虛擬主機(jī)。此后可以用VirtualHost參數(shù)定義對(duì)不同IP的虛擬主機(jī),然而這種用法是較早的HTTP 1.0標(biāo)準(zhǔn)中設(shè)置虛擬主機(jī)的方法,每針對(duì)一個(gè)虛擬主機(jī)就需要一個(gè)IP地址,實(shí)際上用處并不大。在HTTP 1.1中,增加了對(duì)單IP地址多域名的虛擬主機(jī)的支持,使得虛擬主機(jī)的設(shè)置具備更大的意義。
  
  #ExtendedStatus On
  
    Apache服務(wù)器可以通過(guò)特殊的HTTP請(qǐng)求,來(lái)報(bào)告自身的運(yùn)行狀態(tài),打開(kāi)這個(gè)ExtendedStatus 參數(shù)可以讓服務(wù)器報(bào)告更全面的運(yùn)行狀態(tài)信息
  
  
  
  ---------------------------------------------------------------------------------
  
  ServerAdmin you@your.address
  
    配置文件中應(yīng)該改變的也許只有ServerAdmin, 這一項(xiàng)用于配置WWW服務(wù)器的管理員的email地址,這將在HTTP服務(wù)出現(xiàn)錯(cuò)誤的條件下返回給瀏覽器,以便讓W(xué)eb使用者和管理員聯(lián)系,報(bào)告錯(cuò)誤。習(xí)慣上使用服務(wù)器上的webmaster作為WWW服務(wù)器的管理員,通過(guò)郵件服務(wù)器的別名機(jī)制,將發(fā)送到webmaster 的電子郵件發(fā)送給真正的Web管理員。
  
  ServerName localhost
  
    缺省情況下,并不需要指定這個(gè)ServerName參數(shù),服務(wù)器將自動(dòng)通過(guò)名字解析過(guò)程來(lái)獲得自己的名字,但如果服務(wù)器的名字解析有問(wèn)題(通常為反向解析不正確),或者沒(méi)有正式的DNS名字,也可以在這里指定I P地址。當(dāng)ServerName設(shè)置不正確的時(shí)候,服務(wù)器不能正常啟動(dòng)。
  
    通常一個(gè)Web服務(wù)器可以具有多個(gè)名字,客戶(hù)瀏覽器可以使用所有這些名字或IP地址來(lái)訪問(wèn)這臺(tái)服務(wù)器,但在沒(méi)有定義虛擬主機(jī)的情況下,服務(wù)器總是以自己的正式名字回應(yīng)瀏覽器。ServerName就定義了Web服務(wù)器自己承認(rèn)的正式名字,例如一臺(tái)服務(wù)器名字(在DNS中定義了A類(lèi)型)為freebsd.exmaple.org.cn,同時(shí)為了方便記憶還定義了一個(gè)別名(CNAME記錄)為www.exmaple.org.cn,那么Apache自動(dòng)解析得到的名字就為freebsd.example.org.cn,這樣不管客戶(hù)瀏覽器使用哪個(gè)名字發(fā)送請(qǐng)求,服務(wù)器總是告訴客戶(hù)程序自己為freebsd.example.org.cn。雖然這一般并不會(huì)造成什么問(wèn)題,但是考慮到某一天服務(wù)器可能遷移到其他計(jì)算機(jī)上,而只想通過(guò)更改DNS中的www別名配置就完成遷移任務(wù),所以不想讓客戶(hù)在其書(shū)簽中使用 freebsd記錄下這個(gè)服務(wù)器的地址,就必須使用ServerName來(lái)重新指定服務(wù)器的正式名字。
  
  DocumentRoot “/usr/local/www/data“
  
    DocumentRoot定義這個(gè)服務(wù)器對(duì)外發(fā)布的超文本文檔存放的路徑,客戶(hù)程序請(qǐng)求的UR L就被映射為這個(gè)目錄下的網(wǎng)頁(yè)文件。這個(gè)目錄下的子目錄,以及使用符號(hào)連接指出的文件和目錄都能被瀏覽器訪問(wèn),只是要在URL上使用同樣的相對(duì)目錄名。
  
    注意,符號(hào)連接雖然邏輯上位于根文檔目錄之下,但實(shí)際上可以位于計(jì)算機(jī)上的任意目錄中,因此可以使客戶(hù)程序能訪問(wèn)那些根文檔目錄之外的目錄,這在增加了靈活性的同時(shí)但減少了安全性。Apache在目錄的訪問(wèn)控制中提供了FollowSymLinks選項(xiàng)來(lái)打開(kāi)或關(guān)閉支持符號(hào)連接的特性。
  
  <Directory />
   Options FollowSymLinks
   AllowOverride None
  </Directory>
  
    Apache服務(wù)器可以針對(duì)目錄進(jìn)行文檔的訪問(wèn)控制,然而訪問(wèn)控制可以通過(guò)兩種方式來(lái)實(shí)現(xiàn),一個(gè)是在設(shè)置文件 httpd.conf(或access.conf)中針對(duì)每個(gè)目錄進(jìn)行設(shè)置,另一個(gè)方法是在每個(gè)目錄下設(shè)置訪問(wèn)控制文件,通常訪問(wèn)控制文件名字為.htaccess。雖然使用這兩個(gè)方式都能用于控制瀏覽器的訪問(wèn),然而使用配置文件的方法要求每次改動(dòng)后重新啟動(dòng)httpd守護(hù)進(jìn)程,比較不靈活,因此主要用于配置服務(wù)器系統(tǒng)的整體安全控制策略,而使用每個(gè)目錄下的.htaccess文件設(shè)置具體目錄的訪問(wèn)控制更為靈活方便。
  
  
  <Directory “H:/web001“>
  Directory語(yǔ)句就是用來(lái)定義目錄的訪問(wèn)限制的,這里可以看出它的標(biāo)準(zhǔn)語(yǔ)法,為一個(gè)目錄定義訪問(wèn)限制。上例的這個(gè)設(shè)置是針對(duì)系統(tǒng)的根目錄進(jìn)行的,設(shè)置了允許符號(hào)連接的選項(xiàng)FollowSymLinks ,以及使用AllowOverride None表示不允許這個(gè)目錄下的訪問(wèn)控制文件來(lái)改變這里進(jìn)行的配置,這也意味著不用查看這個(gè)目錄下的相應(yīng)訪問(wèn)控制文件。
  
    由于Apache對(duì)一個(gè)目錄的訪問(wèn)控制設(shè)置是能夠被下一級(jí)目錄繼承的,因此對(duì)根目錄的設(shè)置將影響到它的下級(jí)目錄。注意由于AllowOverride None的設(shè)置,使得Apache服務(wù)器不需要查看根目錄下的訪問(wèn)控制文件,也不需要查看以下各級(jí)目錄下的訪問(wèn)控制文件,直至httpd.conf(或access.conf )中為某個(gè)目錄指定了允許Alloworride,即允許查看訪問(wèn)控制文件。由于Apache對(duì)目錄訪問(wèn)控制是采用的繼承方式,如果從根目錄就允許查看訪問(wèn)控制文件,那么Apache就必須一級(jí)一級(jí)的查看訪問(wèn)控制文件

關(guān)鍵詞:Apache,httpd.conf

閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!

  • 1 歡迎喜歡
  • 1 白癡
  • 1 拜托
  • 1 哇
  • 1 加油
  • 1 鄙視