1. 程式人生 > >ngnix、lighttpd、apache三大主流web伺服器的區別

ngnix、lighttpd、apache三大主流web伺服器的區別

(1). lighttpd

Lighttpd是一個具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。lighttpd是眾多OpenSource輕量級的web server中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能。
Lighttpd使用fastcgi方式執行php,它會使用很少的PHP程序響應很大的併發量。
Fastcgi的優點在於:
·         從穩定性上看, fastcgi是以獨立的程序池執行來cgi,單獨一個程序死掉,系統可以很輕易的丟棄,然後重新分配新的程序來執行邏輯.
·         從安全性上看, fastcgi和宿主的server完全獨立, fastcgi怎麼down也不會把server搞垮,
·         從效能上看, fastcgi把動態邏輯的處理從server中分離出來, 大負荷的IO處理還是留給宿主server, 這樣宿主server可以一心一意作IO,對於一個普通的動態網頁來說, 邏輯處理可能只有一小部分, 大量的圖片等靜態IO處理完全不需要邏輯程式的參與(注1)
·         從擴充套件性上講, fastcgi是一箇中立的技術標準, 完全可以支援任何語言寫的處理程式(php,java,python...)



(2).apache

       apache是世界排名第一的web伺服器, 根據netcraft(www.netsraft.co.uk)所作的調查,世界上百分之五十以上的web伺服器在使用apache.
1995年4月, 最早的apache(0.6.2版)由apache group公佈發行. apache group 是一個完全通過internet進行運作的非盈利機構, 由它來決定apache web伺服器的標準發行版中應該包含哪些內容. 准許任何人修改隱錯, 提供新的特徵和將它移植到新的平臺上, 以及其它的工作. 當新的程式碼被提交給apache group時, 該團體稽核它的具體內容, 進行測試, 如果認為滿意, 該程式碼就會被整合到apache的主要發行版中.
apache 的特性:
1) 幾乎可以執行在所有的計算機平臺上.
2) 支援最新的http/1.1協議
3) 簡單而且強有力的基於檔案的配置(httpd.conf).
4) 支援通用閘道器介面(cgi)
5) 支援虛擬主機.
6) 支援http認證.
7) 整合perl.
8) 整合的代理伺服器
9) 可以通過web瀏覽器監視伺服器的狀態, 可以自定義日誌.
10) 支援伺服器端包含命令(ssi).
11) 支援安全socket層(ssl).
12) 具有使用者會話過程的跟蹤能力.
13) 支援fastcgi
14) 支援java servlets



(3).nginx
        Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為“engineX”,是一個高效能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器.Nginx是由俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的 Rambler.ru站點開發.
Nginx以事件驅動的方式編寫,所以有非常好的效能,同時也是一個非常高效的反向代理、負載平衡。其擁有匹配 Lighttpd的效能,同時還沒有Lighttpd的記憶體洩漏問題,而且Lighttpd的mod_proxy也有一些問題並且很久沒有更新。但是Nginx並不支援cgi方式執行,原因是可以減少因此帶來的一些程式上的漏洞。所以必須使用FastCGI方式來執行PHP程式。
nginx做為HTTP伺服器,有以下幾項基本特性:
處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符緩衝.
無快取的反向代理加速,簡單的負載均衡和容錯.
FastCGI,簡單的負載均衡和容錯.
模組化的結構。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理伺服器處理單頁中存在的多個SSI,則這項處理可以並行執行,而不需要相互等待。
Nginx專為效能優化而開發,效能是其最重要的考量,實現上非常注重效率。它支援核心Poll模型,能經受高負載的考驗,有報告表明能支援高達 50,000個併發連線數。
Nginx具有很高的穩定性。其它HTTP伺服器,當遇到訪問的峰值,或者有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響應,只能重啟伺服器。例如當前apache一旦上到200個以上程序,web響應速度就明顯非常緩慢了。而Nginx採取了分階段資源分配技術,使得它的CPU與記憶體佔用率非常低。nginx官方表示保持10,000個沒有活動的連線,它只佔2.5M記憶體,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。
Nginx支援熱部署。它的啟動特別容易, 並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟體版本進行進行升級。




(二).3種WEB伺服器的比較:
        在相對比較大的網站,節約下來的伺服器成本無疑是客觀的。而有些小型網站往往伺服器不多,如果採用 Apache 這類傳統 Web 伺服器,似乎也還能撐過去。但有其很明顯的弊端: Apache 在處理流量爆發的時候(比如爬蟲或者是 Digg 效應) 很容易過載,這樣的情況下采用 Nginx 最為合適。
建議方案:
Apache 後臺伺服器(主要處理php及一些功能請求 如:中文url)
Nginx  前端伺服器(利用它佔用系統資源少得優勢來處理靜態頁面大量請求)
Lighttpd 圖片伺服器
總體來說,隨著nginx功能得完善將使他成為今後web server得主流。