Web服務(wù)器一般指網(wǎng)站服務(wù)器,是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,可以向?yàn)g覽器等Web客戶端提供文檔。你可以放置網(wǎng)站文件,讓全世界瀏覽;可以放置數(shù)據(jù)文件,讓全世界下載。目前最主流的三個(gè)Web服務(wù)器是Apache Nginx IIS。那么WEB服務(wù)器如何選擇 Apache or Nginx?
Web服務(wù)器一般指網(wǎng)站服務(wù)器,是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,可以向?yàn)g覽器等Web客戶端提供文檔。你可以放置網(wǎng)站文件,讓全世界瀏覽;可以放置數(shù)據(jù)文件,讓全世界下載。目前最主流的三個(gè)Web服務(wù)器是Apache Nginx IIS。那么WEB服務(wù)器如何選擇 Apache or Nginx?
1.簡介
Apache:
Apache創(chuàng)建于1995年,并從 1999 年開始在 Apache 軟件基金會(huì)旗下進(jìn)行開發(fā)。Apache靈活、高效,擁有豐富的擴(kuò)展模塊,以及活躍的社區(qū)支持,成為目前世界上最為主流的開源免費(fèi)的Web服務(wù)器軟件。
Nginx:
Nginx是由俄羅斯軟件工程師Igor Sysoev編寫的免費(fèi)開源Web服務(wù)器。自從2004年上市以來,nginx專注于高性能,高并發(fā)性和低內(nèi)存使用。并且其在
負(fù)載均衡,緩存,訪問和帶寬控制以及與各種應(yīng)用程序高效集成等方面的特性,都使得它逐步深受廣大用戶青睞。
2.對比
雖然Apache和Nginx各自的背景不同,但他們的作用目的是一致的,簡單說就是接收用戶請求,然后處理請求,最后將處理結(jié)果返回給用戶。
01.鏈接處理
Apache和Nginx最大的不同在于它們對連接的處理方式。Apache提供一系列多重處理模塊,通過這些多重處理模塊來使用操作系統(tǒng)的資源,對進(jìn)程和線程池進(jìn)行管理,控制處理用戶請求。
Apache提供了三種多重處理模塊:mpm_prefork、mpm_worker、mpm_envent,下面我們做簡要說明對比。
mpm_prefork:模塊產(chǎn)生眾多子進(jìn)程,每個(gè)子進(jìn)程是單線程的,每個(gè)線程鏈接一個(gè)請求,如此一對一的關(guān)系。所以如果請求數(shù)大于進(jìn)程數(shù)時(shí),服務(wù)器的性能就表現(xiàn)得差強(qiáng)人意了。
mpm_worker:與prefork不同,worker中子進(jìn)程是多線程的,每個(gè)線程管理一個(gè)用戶連接。線程數(shù)要多于進(jìn)程數(shù)量,這也就意味著新的連接能立刻得到一個(gè)空閑的線程,而不用等待進(jìn)程空閑。
mpm_event:該模塊與worker相似,區(qū)別在于event可以處理長連接(keep-alive),以避免線程被請求長期占用而造成資源浪費(fèi),同時(shí)也增強(qiáng)了高并發(fā)場景下的請求處理能力。
02.靜態(tài)與動(dòng)態(tài)內(nèi)容的處理
無論是靜態(tài)還是動(dòng)態(tài)內(nèi)容,Apache都可以處理,Apache具有內(nèi)置的解析和執(zhí)行各種動(dòng)態(tài)
腳本語言(包括PHP,Python和Perl)的功能,無需借助外部處理器。
毫無疑問,動(dòng)態(tài)內(nèi)容處理恐怕是Nginx的痛點(diǎn)。Nginx處理動(dòng)態(tài)內(nèi)容的效率并不高,且需借助外部的處理器。所以如果您的站點(diǎn)具有很多動(dòng)態(tài)功能,Apache的表現(xiàn)可能會(huì)更切合你意。不過雖然與Apache相比Nginx的動(dòng)態(tài)內(nèi)容處理能力不佳,但其靜態(tài)內(nèi)容處理還是很高效的。
3.總結(jié)
Apache擁有豐富的模塊組件支持,穩(wěn)定性強(qiáng),BUG少,動(dòng)態(tài)內(nèi)容處理強(qiáng)。
Nginx輕量級,占用資源少,負(fù)載均衡,高并發(fā)處理強(qiáng),靜態(tài)內(nèi)容處理高效。
以上就是小編對于WEB服務(wù)器還選擇 Apache 還是 Nginx的解答。