linux下幾種web服務器對比

Linux下服務器的構建在當前網絡上的使用,基本上能夠基於如下幾種: Apache 、 nginx 、lighttpd。根據Netcraft在最新的統計數據(下圖)php

  Apache毫無疑問是佔了一半以上的份額,相比Apache使用數量的減小,Nginx與lighttpd的佔有量都在緩慢上升。前端

  由此本文將當前Linux下web服務器分爲:LAMP 、 LNMP 以及 LLMP 三種構架。java

  LAMP(Linux + Apache + MySQL + PHP ) LAMP源於1998年,Michael Kunze爲德國計算機雜誌c’t寫做的一篇關於自由軟件如何成爲商業軟件替代品的文章時所創立,用來指代Linux 操做系統、Apache網絡服務器、MySQL 數據庫和PHP (Perl或Python)腳本語言的組合(由四種技術的開頭字母組成)。這一術語很快就被市場接受,而且成爲了開源軟件業的一盞真正的明燈,如今依舊是大部分企業網站的基礎構架。python

  次底層的Apache,是世界使用排名第一的Web服務器軟件,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。有着多年的發展歷史,Apache的擴展性豐富,穩定性很是好,同時卻也存在着體積龐大、速度緩慢的缺點。linux

  LNMP(Linux + Nginx + MySQL + PHP )nginx

  LNMP是近些年才逐漸發展起來的構架,發展很是迅速,服務器以其輕巧快速而獲得許多站長的青睞。git

  次底層的Nginx是一個小巧而高效的Linux下高性能Web和反向代理服務器軟件,是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,兩年半的運行時間,至關的穩定。Nginx特色在於其至關的穩定、功能豐富、安裝配置簡單、低系統資源。github

  LLMP(Linux + Lighttpd + MySQL + PHP )web

  相對來講LLMP構架使用人羣沒有LAMP與LLMP的人多,可是LLMP以其高速輕巧仍是博得了很多站長的喜好。數據庫

  次底層的Litespeed屬於商業軟件,不過免費版的Litespeed功能也很強大,特別是處理靜態文件能力很是的好。可是Litespeed軟件並不是開源,依靠一個團隊的封閉開發,這一點就相對差不少了。

  對比總結:

  LAMP、LNMP、LLMP這三種構架就當前的網絡來講,LAMP無疑是勝出的,基本佔據了一半多的市場。

  可是在面對服務器硬件資源不足、服務器的負載要求很高的狀況下,LNMP是不錯的選擇,特別是我的博客或者小型網站,LNMP的配置相對簡單,是能夠知足要求的。或者在追求高性能服務器上,Nginx服務器確實值得考慮,至於LLMP構架的服務器,縱觀網絡,如今服務的支持性並很差,喜歡折騰學習的話能夠選擇。

  附:如今網絡上還有一種LNAMP構架,也就是綜合了nginx和Apache的優勢,使用Apache負載PHP,nginx負責解析其餘Web請求,使用nginx的rewrite模塊,可是Apache端口不對外開放,Apache的許多模塊均可以不加載減小資源。這個方法不錯,可是配置比較麻煩。雖然已經出現一鍵安裝包了,但也只針對Centos系統。



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,它的發音爲「engine X」, 是一個高性能的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不間斷運行,即便運行數個月也不須要從新啓動。你還可以在不間斷服務的狀況下,對軟件版本進行進行升級。


注:在相對比較大的網站,節約下來的服務器成本無疑是客觀的。而有些小型網站每每服務器很少,若是採用 Apache 這類傳統 Web 服務器,彷佛也還能撐過去。但有其很明顯的弊端: Apache 在處理流量爆發的時候(好比爬蟲或者是 Digg 效應) 很容易過載,這樣的狀況下采用 Nginx 最爲合適。

建議方案:

Apache 後臺服務器(主要處理php及一些功能請求 如:中文url)

Nginx  前端服務器(利用它佔用系統資源少得優點來處理靜態頁面大量請求)

Lighttpd 圖片服務器

整體來講,隨着nginx功能得完善將使他成爲從此web server得主流。


四.各大網站WEB服務器資源列表

網站名操做系統   web服務器

1.門戶網站類:

搜狐     LINUX     apache 1.3.37

新浪     LINUX     apache 2.0.54

迅雷     LINUX     nginx 0.6.31

163      LINUX     apache 2.2.6

2.搜索類

百度      unknown   BWS 1.0

Google   linux        gws

Sougou   FreeBSD    apache 2.2.4

Hao123   linux        apache 2.2.4

4. 電子郵箱類

126        linux         apache

Hotmail    win2003     microsoft-IIS 6.0

新浪郵箱    F5 Big-IP    apache 2.2.8

263        linux         apache 2.2.6

5. 博客類

新浪博客    linux          nginx 0.5.35

搜狐博客    linux          nginx

迅雷博客    linux          nginx 0.6.32

天涯博客    F5 Big-IP      Microsoft-IIS/5.0

6.視頻類

優酷         linux          apache

土豆         linux          apache

Ku6         linux          apache

六間房       linux          nginx 0.6.14




一、nginx相對於apache的優勢:輕量級,一樣起web 服務,比apache 佔用更少的內存及資源抗併發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高性能高度模塊化的設計,編寫模塊相對簡單社區活躍,各類高性能模塊出品迅速啊apache 相對於nginx 的優勢:rewrite ,比nginx 的rewrite 強大模塊超多,基本想到的均可以找到少bug ,nginx 的bug 相對較多超穩定存在就是理由,通常來講,須要性能的web 服務,用nginx 。若是不須要性能只求穩定,那就apache 吧。後者的各類功能模塊實現得比前者,例如ssl 的模塊就比前者好,可配置項多。這裏要注意一點,epoll(freebsd 上是 kqueue )網絡IO 模型是nginx 處理性能高的根本理由,但並非全部的狀況下都是epoll 大獲全勝的,若是自己提供靜態服務的就只有寥寥幾個文件,apache 的select 模型或許比epoll 更高性能。固然,這只是根據網絡IO 模型的原理做的一個假設,真正的應用仍是須要實測了再說的。 二、做爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發鏈接,體現更高的效率,這點使 Nginx 尤爲受到虛擬主機提供商的歡迎。在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品: Nginx在美國是作虛擬主機生意的老闆們常常選擇的軟件平臺之一. 可以支持高達 50,000 個併發鏈接數的響應, 感謝Nginx爲咱們選擇了 epoll and kqueue 做爲開發模型.Nginx做爲負載均衡服務器: Nginx 既能夠在內部直接支持 Rails 和 PHP 程序對外進行服務, 也能夠支持做爲 HTTP代理 服務器對外進行服務. Nginx採用C進行編寫, 不管是系統資源開銷仍是CPU使用效率都比 Perlbal 要好不少.做爲郵件代理服務器: Nginx 同時也是一個很是優秀的郵件代理服務器(最先開發這個產品的目的之一也是做爲郵件代理服務器), Last.fm 描述了成功而且美妙的使用經驗.Nginx 是一個安裝很是的簡單 , 配置文件很是簡潔(還可以支持perl語法), Bugs 很是少的服務器: Nginx 啓動特別容易, 而且幾乎能夠作到7*24不間斷運行,即便運行數個月也不須要從新啓動. 你還可以不間斷服務的狀況下進行軟件版本的升級 .三、Nginx 配置簡潔, Apache 複雜Nginx 靜態處理性能比 Apache 高 3倍以上Apache 對 PHP 支持比較簡單,Nginx 須要配合其餘後端用Apache 的組件比 Nginx 多如今 Nginx 纔是 Web 服務器的首選 四、最核心的區別在於apache是同步多進程模型,一個鏈接對應一個進程;nginx是異步的,多個鏈接(萬級別)能夠對應一個進程 五、nginx處理靜態文件好,耗費內存少.但無疑apache仍然是目前的主流,有不少豐富的特性.因此還須要搭配着來.固然若是能肯定nginx就適合需求,那麼使用nginx會是更經濟的方式. 六、從我的過往的使用狀況來看,nginx的負載能力比apache高不少。最新的服務器也改用nginx了。並且nginx改完配置能-t測試一下配置有沒有問題,apache重啓的時候發現配置出錯了,會很崩潰,改的時候都會很是當心翼翼如今看有好多集羣站,前端nginx抗併發,後端apache集羣,配合的也不錯。 七、nginx處理動態請求是雞肋,通常動態請求要apache去作,nginx只適合靜態和反向。 八、從我個人的經驗來看,nginx是很不錯的前端服務器,負載性能很好,在老奔上開nginx,用webbench模擬10000個靜態文件請求絕不吃力。apache對php等語言的支持很好,此外apache有強大的支持網路,發展時間相對nginx更久,bug少可是apache有先天不支持多核心處理負載雞肋的缺點,建議使用nginx作前端,後端用apache。大型網站建議用nginx自代的集羣功能 九、Nginx優於apache的主要兩點:1.Nginx自己就是一個反向代理服務器 2.Nginx支持7層負載均衡;其餘的固然,Nginx可能會比apache支持更高的併發,可是根據NetCraft的統計,2011年4月的統計數據,Apache依然佔有62.71%,而Nginx是7.35%,所以總得來講,Aapche依然是大部分公司的首先,由於其成熟的技術和開發社區已經也是很是不錯的性能。 十、你對web server的需求決定你的選擇。大部分狀況下nginx都優於APACHE,好比說靜態文件處理、PHP-CGI的支持、反向代理功能、前端Cache、維持鏈接等等。在Apache+PHP(prefork)模式下,若是PHP處理慢或者前端壓力很大的狀況下,很容易出現Apache進程數飆升,從而拒絕服務的現象。 十一、能夠看一下nginx lua模塊:https://github.com/chaoslaw...apache比nginx多的模塊,可直接用lua實現apache是最流行的,why?大多數人懶得更新到nginx或者學新事物 十二、對於nginx,我喜歡它配置文件寫的很簡潔,正則配置讓不少事情變得簡單運行效率高,佔用資源少,代理功能強大,很適合作前端響應服務器 1三、Apache在處理動態有優點,Nginx併發性比較好,CPU內存佔用低,若是rewrite頻繁,那仍是Apache吧        

相關文章
相關標籤/搜索