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