|
|
|
|
|
Nginx 和 Apache 是 Internet 上最常用的兩個(gè) Web 服務(wù)器。他們共同擁有超過(guò) 60% 的總市場(chǎng)份額。
但是你應(yīng)該使用哪一個(gè)?這正是本文的目的。
本文將通過(guò)5大因素多方面比較,幫助你選擇。此外,前面一文的介紹可能對(duì)你的選擇也有幫助:
在選擇像 Web 服務(wù)器這樣的關(guān)鍵軟件時(shí),你應(yīng)該首先考慮的是它的性能特征。
不僅是它們每秒可以服務(wù)多少個(gè)請(qǐng)求,還包括它們?cè)谥刎?fù)載下的表現(xiàn)以及資源使用情況(RAM、CPU)是什么樣的。
這是我們的測(cè)試設(shè)置:
作為基準(zhǔn)測(cè)試工具,我們將使用具有以下設(shè)置:
我們的目標(biāo) URL 返回一個(gè)不涉及服務(wù)器語(yǔ)言的小型 HTML 文件。
運(yùn)行這個(gè)測(cè)試,我們得到以下結(jié)果(請(qǐng)求/秒):
Apache Nginx
670.53 660.15
似乎 Nginx 和 Apache 的速度差不多!
但是資源使用情況呢?
運(yùn)行此測(cè)試時(shí),Apache 平均 CPU 使用率為 20% 和 18MB RAM:
Apache 平均 CPU 使用率
Nginx CPU 使用率平均為 12%,只有 8MB RAM:
Nginx CPU 使用率
雖然此基準(zhǔn)測(cè)試可能無(wú)法代表所有實(shí)際用例,并且你應(yīng)該考慮為你的特定設(shè)置運(yùn)行自己的基準(zhǔn)測(cè)試,但它可以讓你大致了解這些服務(wù)器的性能。
另外,Nginx wiki上有一篇文章比較了性能影響。
性能影響 Nginx 與 Apache
總之,如果你最關(guān)心的是性能和資源的有效利用,你應(yīng)該考慮使用 Nginx。
兩臺(tái)服務(wù)器都具有一套很好的核心功能,對(duì)于大多數(shù)人來(lái)說(shuō)應(yīng)該足夠了。
但有時(shí)你需要一點(diǎn)額外的東西。
這就是你可以使用 modules 擴(kuò)展兩個(gè)服務(wù)器的原因。
模塊可以編譯到主服務(wù)器二進(jìn)制文件中,也可以作為動(dòng)態(tài)模塊添加,可以與二進(jìn)制文件分開(kāi)安裝。
動(dòng)態(tài)模塊更靈活,因?yàn)樗鼈兛梢宰孕懈拢憧梢蕴砑有履K而無(wú)需重新編譯服務(wù)器。
大多數(shù) Apache 模塊都是動(dòng)態(tài)的,但 Nginx 最近(版本 1.9.11,2016 年發(fā)布)開(kāi)始支持此功能。
現(xiàn)在,讓我們看一下兩個(gè)服務(wù)器的一些有用模塊。
兩種服務(wù)器都可以使用許多流行的模塊,因此在決定使用哪種服務(wù)器時(shí),模塊可用性可能不是一個(gè)因素。
安裝新模塊:
向 Apache 添加新模塊比向 Nginx 添加新模塊更容易。
你可以從包存儲(chǔ)庫(kù)安裝 Apache 模塊,然后使用a2enmod
命令啟用它并重新啟動(dòng)服務(wù)器。
Nginx 可能需要你從源代碼編譯以安裝某些模塊,因?yàn)閯?dòng)態(tài)模塊必須針對(duì)你正在運(yùn)行的 Nginx 的相同版本構(gòu)建。
但是,你可以在非生產(chǎn)服務(wù)器上執(zhí)行此操作,然后將動(dòng)態(tài)模塊(.so 文件)復(fù)制到生產(chǎn)中。
如果你認(rèn)為你需要經(jīng)常更改模塊,則需要考慮這一點(diǎn),但情況并非如此。
一款開(kāi)源軟件的受歡迎程度很重要,因?yàn)樽钍軞g迎的軟件通常會(huì)得到最多的關(guān)注。這可以轉(zhuǎn)化為更好的文檔,找到特定問(wèn)題的解決方案的能力以及軟件本身的維護(hù)程度。
那么 Apache 和 Nginx 到底有多受歡迎?
根據(jù) w3techs 的數(shù)據(jù),Nginx 的市場(chǎng)份額一直在穩(wěn)步增長(zhǎng),而Apache的市場(chǎng)份額卻在逐步下降。在2019年,Nginx的市場(chǎng)份額開(kāi)始超過(guò)Apache。
網(wǎng)絡(luò)服務(wù)器使用
這些數(shù)據(jù)與全球整體 Web 服務(wù)器有關(guān),但如果我們對(duì)排名前 100 萬(wàn)的網(wǎng)站進(jìn)行抽樣,Nginx 已經(jīng)存在一段時(shí)間了:
使用 Nginx 的網(wǎng)站百分比
谷歌搜索趨勢(shì)似乎也反映了這一事實(shí):
Google 搜索趨勢(shì):Nginx 與 Apache
Netcraft 調(diào)查顯示,Apache 在 2019 年 4 月已被 Nginx 超越。
讓我們看一下 Apache 和 Nginx 最常見(jiàn)的用途,這將幫助你確定你的用例是否與服務(wù)器自然最擅長(zhǎng)的用途相匹配。
Apache 的優(yōu)勢(shì):
mod_php
如果它還不是你的發(fā)行版的默認(rèn)安裝的一部分,則只需安裝它。Nginx 的優(yōu)勢(shì):
ngx_lua&
等模塊輕松實(shí)現(xiàn)自定義邏輯ngx_mruby
。Cloudflare在其自定義 WAF(Web 應(yīng)用程序防火墻)中充分利用了這一點(diǎn)。在做出最終決定之前還需要考慮一些事項(xiàng):
我們希望對(duì)你有用。