首先,惡補一下,apache的原理,我的覺着比較重要。web
若是web原理不清楚,自行google;apache
Apache 做爲歷史最悠久的web服務器,一直是web應用系統的首選,是世界上被普遍應用的web 服務器軟件,它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的web服務器端軟件之一,也是流行架構LAMP的重要組成部分。瀏覽器
特色:安全
支持最新的HTTP/1.1通訊協議。Apache是最早使用HTTP/1.1協議的Web服務器之一,它徹底兼容HTTP/1.1協議並與HTTP/1.0協議向後兼容。Apache已爲新協議所提供的所有內容作好了必要的準備。服務器
支持多計算機平臺。Apache幾乎能夠在全部的計算機操做系統上運行,包括主流的UNIX、Linux及Windows操做系統。多線程
配置文件簡單,易操做。用戶能夠經過直接修改Apache的配置文件信息來修改Apache,操做起來十分方便。架構
支持實時監視服務器狀態和定製服務器日誌。Apache在記錄日誌和監視服務器自身運行狀態方面提供了很大的靈活性,能夠經過Web瀏覽器來監視服務器的狀態,也能夠根據本身的須要來定製日誌。google
支持多種方式的HTTP認證。spa
支持Web目錄修改。用戶能夠使用特定的目錄做爲Web目錄。操作系統
支持CGI腳本,如Perl、PHP等。
支持服務器端包含指令(SSI)。
支持安全Socket層(SSL)。
支持FastCGI。
支持虛擬主機。即經過在一臺服務器上使用不一樣的主機名來提供多個HTTP服務。Apache支持基於IP、主機名和端口號三種類型的虛擬主機服務。
跟蹤用戶會話。當用戶瀏覽基於Apache的Web站點時,能夠經過Apache的mod_usertrack模塊對其進行跟蹤。
支持動態共享對象。Apache的模塊可在運行時動態加載,這就意味着這些模塊能夠被裝入服務器進程空間,從而減小系統的內存開銷。
支持多進程。當負載增長時,服務器會快速生成子進程來處理,從而提升系統的響應能力。
支持第三方軟件開發商提供的功能模塊。好比Apache加載mod_jserv模塊後能夠支持Java Servlet,這樣就能夠運行Java應用程序了。
支持多線程和多進程混合模型的MPM。 當MPM類型指定爲worker時,因爲是使用線程來處理,因此能夠處理海量的請求,而系統資源的開銷要小於基於進程的服務器。
Apache 2.X 支持插入式並行處理模塊,稱爲多路處理模塊(MPM)。在編譯apache時必須選擇也只能選擇一個MPM,對類UNIX系統,有幾個不一樣的MPM可供選擇,它們會影響到apache的速度和可伸縮性。
Worker MPM : 使用多個子進程,每一個子進程中又有多個線程。每一個線程處理一個請求,該MPM一般對高流量的服務器是一個不錯的選擇。由於它比prefork MPM須要更少的內存且更具備伸縮性。
Prefork MPM : 使用多個子進程,但每一個子進程不包含多線程。每一個進程只處理一個鏈接。在許多系統上它的速度和worker MPM同樣快,可是須要更多的內存。這種無線程的設計在某些性況下優於worker MPM,由於它可在應用於不具有線程安全的第三方模塊上(如 PHP3/4/5),且在不支持線程調試的平臺上易於調試,另外還具備比worker MPM更高的穩定性。