統(tǒng)計數(shù)據(jù)顯示,超過80%的web應用程序和網(wǎng)站都是使用的開源web服務器。在本文中,我們將介紹目前市場上最流行的5大開源web服務器,并簡要回顧它們的歷史,技術(shù)特性以及更多相關(guān)內(nèi)容,方便你自己能夠更加輕松的部署這些流行的web服務器。
根據(jù)維基百科介紹,web服務器是“通過HTTP協(xié)議處理web請求的計算機系統(tǒng)”(a computer system that processes requests via HTTP)。這個詞可以指代整個系統(tǒng),也可以指代可接收和管理HTTP請求的的程序。本文中介紹的web服務器指的是為終端用戶處理web請求的程序。
Apache HTTP Server
Apache HTTP Server,我們常常稱之為httpd,或者更簡單的Apache。它誕生于1995年,并在2015年2月20日度過了其20歲的生日。全球超過52%的網(wǎng)站使用了Apache,它是目前最流行的web服務器。
Apache httpd通常運行在Linux上,也可以部署在OS X和Windows之上,它的發(fā)布得到Apache許可證 2.0 版的許可。該web服務器自身使用模塊化架構(gòu),加載其它額外的模塊可以作為其額外特性。比如,加載mod_proxy模塊可以增加服務器代理/ 網(wǎng)關(guān)的功能,加載mod_proxy_balancer模塊可以為所有支持的協(xié)議提供負載平衡。在v2.4版本里,Apache可通過全新的mod_http2模塊支持HTTP/2。
從1996年開始,Apache HTTP Server就已經(jīng)是最為流行的web服務器了,這與它擁有偉大的文檔和軟件項目集成支持的特性是分不開的,你可以在Apache基金會的項目頁面上找到它的更多信息。
NGINX
Igor Sysoev從2002年開始開發(fā)NGINX,并在2004年發(fā)布了第一個公開版本。NGINX的開發(fā)是為了解決C10K(C10K是如何處理1萬個并發(fā)連接的簡寫)問題,目前,它是第二流行的開源web服務器,全球有超過30%的網(wǎng)站在使用它。
NGINX依靠異步事件驅(qū)動架構(gòu)來幫助其處理大量的并發(fā)會話,由于其對資源的輕量利用和伸縮自如的特性,它成為了廣受歡迎的web服務器。
NGINX在類BSD(Berkeley Software Distribution)許可協(xié)議的授權(quán)下發(fā)布的,它不僅可作為web服務器進行部署,也可作為代理服務器或負載平衡器。你可以在NGINX社區(qū)網(wǎng)站找到它的更多信息。
Apache Tomcat
Apache Tomcat是一個可作為web服務器的開源Java servlet容器。Java servlet是可擴展服務器特性的Java程序,雖然servlets可以對任何類型的請求作出響應,但是它還是最常用于Web服務器上的應用實施。這些web servlet在Java上的作用與PHP和ASP.NET等其它動態(tài)web技術(shù)類似。Tomcat的代碼庫是由Sun Microsystems公司在1999年捐贈給Apache軟件基金會的,并在2005年成為Apache的頂級項目,目前有不到1%的網(wǎng)站在使用它。
Apache Tomcat是在Apache許可證 2.0 版的授權(quán)下進行發(fā)布的,通常用于運行Java應用程序。此外,它能夠通過Coyote的擴展,扮演為本地文件HTTP文檔服務的普通服務器的角色。更多詳細的信息可以查看Apache Tomcat項目網(wǎng)站。
另外,Apache Tomcat還經(jīng)常內(nèi)嵌在其它開源Java應用服務器中,如JBoss,Wildfly和Glassfish。
Node.js
Node.js是一個用于web服務器等網(wǎng)絡(luò)應用的服務器端JavaScript環(huán)境。由于其較小的市場定位,在所有網(wǎng)站中只有0.2%使用Node.js。Node.js最初是由Ryan Dahl在2009年編寫的,現(xiàn)在Node.js項目由Node.js基金會進行管理,并在Linux基金會的合作項目計劃下快速發(fā)展。
相比起其它流行的web服務器,Node.js的不同之處在于它是一個構(gòu)建網(wǎng)絡(luò)應用的跨平臺運行環(huán)境,擁有可勝任異步I/0的事件驅(qū)動構(gòu)架。這些設(shè)計選擇能夠優(yōu)化應用程序的數(shù)據(jù)吞吐量和可伸縮性,支持實時通信和網(wǎng)頁游戲。 Node.js 還強調(diào)了web開發(fā)堆棧上的差異,Node.js清楚地顯示作為HTML、 CSS或者JavaScript堆棧的一部分,在這一點上與Apache或者NGINX同時作為多個不同軟件堆棧的一部分的理念正好是相反的。
Node.js是在混合授權(quán)協(xié)議下發(fā)布的,更多信息可以查看該項目網(wǎng)站。
Lighttpd
Lighttpd,于2003年3月首次發(fā)布,目前全球有大約0.1%的網(wǎng)站在使用它,它是在BSD的許可協(xié)議下發(fā)布的。
Lighttpd以其低內(nèi)存占用,低CPU負載和處理速度的優(yōu)化而獨立于世,它使用事件驅(qū)動架構(gòu),對大量并行連接進行優(yōu)化,支持FastCGI, SCGI, Auth,Output-compression, URL-rewriting等多種功能。Lighttpd主要用于Catalyst和Ruby on Rails的web框架。通過項目主頁,你可以找到它的更多信息。
小貼士
如果你正在尋找一個流行的web服務器,我強烈建議你下載 LAMP(Linux, Apache, MySQL, PHP)或者LEMP(Linux, NGINX, MySQL, PHP)配套堆棧。此外,還可以根據(jù)根據(jù)你自己的不同喜好,更換搭配多種這樣的配套堆棧。這種配套堆棧通常都提供了一鍵安裝支持或者Linux上的軟件包管理器的安裝支持。
本文翻譯自opensource.com