最流行的5大開源Web伺服器

百度雲服務發表於2019-03-22

超過80%的web應用程式和網站都是使用的開源web伺服器。在本文中,我們將介紹目前市場上最流行的5大開源web伺服器,並簡要回顧它們的歷史,技術特性以及更多相關內容,方便你自己能夠更加輕鬆的部署這些流行的web伺服器。

根據維基百科介紹,web伺服器是“通過HTTP協議處理web請求的計算機系統”(a computer system that processes requests via HTTP)。這個詞可以指代整個系統,也可以指代可接收和管理HTTP請求的的程式。本文中介紹的web伺服器指的是為終端使用者處理web請求的程式。

NGINX伺服器

Igor Sysoev從2002年開始開發NGINX,並在2004年釋出了第一個公開版本。NGINX的開發是為了解決C10K(C10K是如何處理1萬個併發連線的簡寫)問題,目前,全球有超過30%的網站在使用它。

Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同型別的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。

NGINX依靠非同步事件驅動架構來幫助其處理大量的併發會話,由於其對資源的輕量利用和伸縮自如的特性,它成為了廣受歡迎的web伺服器。

NGINX在類BSD(Berkeley Software Distribution)許可協議的授權下發布的,它不僅可作為web伺服器進行部署,也可作為代理伺服器或負載平衡器。你可以在NGINX社群網站找到它的更多資訊。

NGINX的特點:

伺服器

Nginx作為負載均衡伺服器:Nginx 既可以在內部直接支援 Rails 和 PHP 程式對外進行服務,也可以支援作為 HTTP代理伺服器對外進行服務。Nginx採用C進行編寫,不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。

處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符緩衝。

無快取的反向代理加速,簡單的負載均衡和容錯。

FastCGI,簡單的負載均衡和容錯。

模組化的結構。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理伺服器處理單頁中存在的多個 SSI,則這項處理可以並行執行,而不需要相互等待。

支援 SSL 和 TLSSNI。

程式碼

Nginx程式碼完全用C語言從頭寫成,已經移植到許多體系結構和作業系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函式庫,並且除了zlib、PCRE和OpenSSL之外,標準模組只使用系統C庫函式。而且,如果不需要或者考慮到潛在的授權衝突,可以不使用這些第三方庫。

代理伺服器

作為郵件代理伺服器:Nginx 同時也是一個非常優秀的郵件代理伺服器(最早開發這個產品的目的之一也是作為郵件代理伺服器),Last.fm 描述了成功並且美妙的使用經驗。

Nginx 是一個安裝非常的簡單、配置檔案非常簡潔(還能夠支援perl語法)、Bug非常少的伺服器。Nginx 啟動特別容易,並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動。你還能夠不間斷服務的情況下進行軟體版本的升級。

Lighttpd伺服器

Lighttpd 是一個德國人領導的開源Web伺服器軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的web server環境。具有非常低的記憶體開銷、cpu佔用率低、效能好以及豐富的模組等特點。

Lighttpd以其低記憶體佔用,低CPU負載和處理速度的優化而獨立於世,它使用事件驅動架構,對大量並行連線進行優化,支援FastCGI, SCGI, Auth,Output-compression, URL-rewriting等多種功能。Lighttpd主要用於Catalyst和Ruby on Rails的web框架。通過專案主頁,你可以找到它的更多資訊。

Apache

Apache HTTP Server 簡稱為 Apache。它誕生於1995年,並在2015年2月20日度過了其20歲的生日。全球超過52%的網站使用了Apache,它是目前最流行的web伺服器。

Apache,中文名:阿帕奇,是Apache軟體基金會的一個開放原始碼的網頁伺服器,可以在大多數計算機作業系統中執行,由於其多平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充套件,將Perl/Python等直譯器編譯到伺服器中。開發者 Apache軟體基金會。Apache httpd通常執行在Linux上,也可以部署在OS X和Windows之上,它的釋出得到Apache許可證 2.0 版的許可。該web伺服器自身使用模組化架構,載入其它額外的模組可以作為其額外特性。比如,載入mod_proxy模組可以增加伺服器代理/ 閘道器的功能,載入mod_proxy_balancer模組可以為所有支援的協議提供負載平衡。在v2.4版本里,Apache可通過全新的mod_http2模組支援HTTP/2。

從1996年開始,Apache HTTP Server就已經是最為流行的web伺服器了,這與它擁有偉大的文件和軟體專案整合支援的特性是分不開的,你可以在Apache基金會的專案頁面上找到它的更多資訊。

Apache Tomcat

Apache只支援靜態網頁,但像php,cgi,jsp等動態網頁就需要Tomcat來處理。 Tomcat是由Apache軟體基金會下屬的Jakarta專案開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和JavaServer Page(JSP)的支援,並提供了作為Web伺服器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。由於Tomcat本身也內含了一個HTTP伺服器,它也可以被視作一個單獨的Web伺服器。但是,不能將 Tomcat 和 Apache Web 伺服器混淆,Apache Web Server 是一個用 C 語言實現的 HTTP web server;這兩個 HTTP web server 不是捆綁在一起的。Apache Tomcat 包含了一個配置管理工具,也可以通過編輯 XML 格式的配置檔案來進行配置。Apache,nginx,tomcat並稱為網頁服務三劍客,可見其應用度之廣泛。

Apache Tomcat是在Apache許可證 2.0 版的授權下進行釋出的,通常用於執行Java應用程式。此外,它能夠通過Coyote的擴充套件,扮演為本地檔案HTTP文件服務的普通伺服器的角色。更多詳細的資訊可以檢視Apache Tomcat專案網站。

另外,Apache Tomcat還經常內嵌在其它開源Java應用伺服器中,如JBoss, Wildfly和Glassfish。

Apache有多種產品,可以支援SSL技術,支援多個虛擬主機。Apache是以程式為基礎的結構,程式要比執行緒消耗更多的系統開銷,不太適合於多處理器環境,因此,在一個Apache Web站點擴容時,通常是增加伺服器或擴充群集節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web伺服器,市場佔有率達60%左右。世界上很多著名的Yahoo!、W3 Consortium、Financial Times等都是Apache的產物,它的成功之處主要在於它的原始碼開放、有一支開放的開發隊伍、支援跨平臺的應用(可以執行在幾乎所有的Unix、 Windows、Linux系統平臺上)以及它的可移植性等方面。

Apache的誕生極富有戲劇性。當NCSA WWW伺服器專案停頓後,那些使用NCSA WWW伺服器的人們開始交換他們用於該伺服器的補丁程式,他們也很快認識到成立管理這些補丁程式的論壇是必要的。就這樣,誕生了Apache Group,後來這個團體在NCSA的基礎上建立了Apache。如果你準備選擇Web伺服器,毫無疑問Apache是你的最佳選擇。

Node.js

NNode.js是一個Javascript執行環境(runtime environment),釋出於2009年5月,由Ryan Dahl開發,實質是對Chrome V8引擎進行了封裝。Node.js對一些特殊用例進行優化,提供替代的API,使得V8在非瀏覽器環境下執行得更好。

V8引擎執行Javascript的速度非常快,效能非常好。 [1] Node.js是一個基於Chrome JavaScript執行時建立的平臺, 用於方便地搭建響應速度快、易於擴充套件的網路應用。Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用。

相比起其它流行的web伺服器,Node.js的不同之處在於它是一個構建網路應用的跨平臺執行環境,擁有可勝任非同步I/0的事件驅動構架。這些設計選擇能夠優化應用程式的資料吞吐量和可伸縮性,支援實時通訊和網頁遊戲。 Node.js 還強調了web開發堆疊上的差異,Node.js清楚地顯示作為HTML、 CSS或者JavaScript堆疊的一部分,在這一點上與Apache或者NGINX同時作為多個不同軟體堆疊的一部分的理念正好是相反的。

Node.js是在混合授權協議下發布的,更多資訊可以檢視該專案網站。

在幾年的時間裡,Node.JS逐漸發展成一個成熟的開發平臺,吸引了許多開發者。有許多大型高流量網站都採用Node.JS進行開發,此外,開發人員還可以使用它來開發一些快速移動Web框架。

除了Web應用外,NodeJS也被應用在許多方面,NodeJS在其它方面所開發的十大令人神奇的專案,這些專案涉及到應用程式監控、媒體流、遠端控制、桌面和移動應用等等。

小貼士

如果你正在尋找一個流行的web伺服器,我強烈建議你下載 LAMP(Linux, Apache, MySQL, PHP)或者LEMP(Linux, NGINX, MySQL, PHP)配套堆疊。此外,還可以根據根據你自己的不同喜好,更換搭配多種這樣的配套堆疊。這種配套堆疊通常都提供了一鍵安裝支援或者Linux上的軟體包管理器的安裝支援。

原文:https://mp.weixin.qq.com/s/z7S65VvVsrXWLhAoSdKAcw

最流行的5大開源Web伺服器


相關文章