技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

選 Nginx 還是 Apache - 5大因素助你決定

作者:admin    時間:2022-3-22 11:27:49    瀏覽:

Nginx 和 Apache 是 Internet 上最常用的兩個 Web 服務(wù)器。他們共同擁有超過 60% 的總市場份額。

但是你應(yīng)該使用哪一個?這正是本文的目的。

本文將通過5大因素多方面比較,幫助你選擇。此外,前面一文的介紹可能對你的選擇也有幫助:

 選 Nginx 還是 Apache - 5大因素助你決定

性能表現(xiàn)(Performance)

在選擇像 Web 服務(wù)器這樣的關(guān)鍵軟件時,你應(yīng)該首先考慮的是它的性能特征。

不僅是它們每秒可以服務(wù)多少個請求,還包括它們在重負(fù)載下的表現(xiàn)以及資源使用情況(RAM、CPU)是什么樣的。

這是我們的測試設(shè)置:

  • Ubuntu 18.04
  • Apache 2.4.29 (mpm_event)
  • Nginx 1.14.0
  • 默認(rèn)設(shè)置
  • 1GB 內(nèi)存
  • 1 個 CPU

作為基準(zhǔn)測試工具,我們將使用具有以下設(shè)置:

  • -d 60(測試持續(xù)時間)
  • -c 40(并發(fā))
  • --latency(延遲分布)

我們的目標(biāo) URL 返回一個不涉及服務(wù)器語言的小型 HTML 文件。

運行這個測試,我們得到以下結(jié)果(請求/秒):

Apache    Nginx
670.53     660.15

似乎 Nginx 和 Apache 的速度差不多!

但是資源使用情況呢?

運行此測試時,Apache 平均 CPU 使用率為 20% 和 18MB RAM:

 Apache 平均 CPU 使用率
Apache 平均 CPU 使用率

Nginx CPU 使用率平均為 12%,只有 8MB RAM:

Nginx CPU 使用率 
Nginx CPU 使用率

雖然此基準(zhǔn)測試可能無法代表所有實際用例,并且你應(yīng)該考慮為你的特定設(shè)置運行自己的基準(zhǔn)測試,但它可以讓你大致了解這些服務(wù)器的性能。

另外,Nginx wiki上有一篇文章比較了性能影響。

性能影響 Nginx 與 Apache
性能影響 Nginx 與 Apache

總之,如果你最關(guān)心的是性能和資源的有效利用,你應(yīng)該考慮使用 Nginx。

可擴(kuò)展性(Extensibility)

兩臺服務(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ù)器的一些有用模塊。

  • modsecurity:可用于 Apache。該模塊在您的應(yīng)用程序前面添加了一個 Web 應(yīng)用程序防火墻 (WAF)。有一個 Nginx 版本,但是好像沒有維護(hù),可以用Naxsi代替。
  • page_speed:適用于 Apache 和 Nginx。該模塊可以動態(tài)優(yōu)化圖像并添加其他優(yōu)化以改善頁面加載時間。
  • ngx_mruby / mod_ruby:可用于 Apache 和 Nginx。該模塊允許你使用 Ruby 編程語言來處理請求并做出決定以重定向到另一個頁面、返回一些文件內(nèi)容等。nginx 版本維護(hù)良好且速度更快。

兩種服務(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)常更改模塊,則需要考慮這一點,但情況并非如此。

人氣(Popularity)

一款開源軟件的受歡迎程度很重要,因為最受歡迎的軟件通常會得到最多的關(guān)注。這可以轉(zhuǎn)化為更好的文檔,找到特定問題的解決方案的能力以及軟件本身的維護(hù)程度。

那么 Apache 和 Nginx 到底有多受歡迎?

根據(jù) w3techs 的數(shù)據(jù),Nginx 的市場份額一直在穩(wěn)步增長,而Apache的市場份額卻在逐步下降。在2019年,Nginx的市場份額開始超過Apache。

網(wǎng)絡(luò)服務(wù)器使用 
網(wǎng)絡(luò)服務(wù)器使用

 這些數(shù)據(jù)與全球整體 Web 服務(wù)器有關(guān),但如果我們對排名前 100 萬的網(wǎng)站進(jìn)行抽樣,Nginx 已經(jīng)存在一段時間了:

 使用 Nginx 的網(wǎng)站百分比
使用 Nginx 的網(wǎng)站百分比

谷歌搜索趨勢似乎也反映了這一事實:

 Google 搜索趨勢:Nginx 與 Apache
Google 搜索趨勢:Nginx 與 Apache

Netcraft 調(diào)查顯示,Apache 在 2019 年 4 月已被 Nginx 超越。

最常見的用途

讓我們看一下 Apache 和 Nginx 最常見的用途,這將幫助你確定你的用例是否與服務(wù)器自然最擅長的用途相匹配。

Apache 的優(yōu)勢:

  • 在沒有外部軟件的情況下運行 PHP 應(yīng)用程序(如 Wordpress),mod_php如果它還不是你的發(fā)行版的默認(rèn)安裝的一部分,則只需安裝它。
  • 在共享環(huán)境(如托管服務(wù)提供商)中效果很好,因為它支持基于目錄的.htaccess文件配置。

Nginx 的優(yōu)勢:

  • 由于其事件驅(qū)動的方法來處理請求,因此非常有效地服務(wù)靜態(tài)資產(chǎn)。
  • 出于同樣的原因,它是一個很棒的代理和緩存層。
  • 你可以使用ngx_lua&等模塊輕松實現(xiàn)自定義邏輯ngx_mruby。Cloudflare在其自定義 WAF(Web 應(yīng)用程序防火墻)中充分利用了這一點。

最后的考慮

在做出最終決定之前還需要考慮一些事項:

  • Nginx 以 Nginx PLUS 的形式提供企業(yè)級解決方案。這增加了專業(yè)支持和一些額外的功能(如監(jiān)控),如果你正在運行大型操作,這可能對你很重要。
  • Apache 和 Nginx 可以一起使用,Nginx 將非靜態(tài)資產(chǎn)請求代理到 Apache。這可能會顯著增加你的設(shè)置復(fù)雜性,但如果你想同時使用兩者的功能,則需要考慮這一點。

我們希望對你有用。

相關(guān)文章

標(biāo)簽: nginx  apache  
x