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