|
|
|
|
|
|
Nginx 和 Apache 是 Internet 上最常用的兩個 Web 服務器。他們共同擁有超過 60% 的總市場份額。
但是你應該使用哪一個?這正是本文的目的。
本文將通過5大因素多方面比較,幫助你選擇。此外,前面一文的介紹可能對你的選擇也有幫助:

在選擇像 Web 服務器這樣的關鍵軟件時,你應該首先考慮的是它的性能特征。
不僅是它們每秒可以服務多少個請求,還包括它們在重負載下的表現以及資源使用情況(RAM、CPU)是什么樣的。
這是我們的測試設置:
作為基準測試工具,我們將使用具有以下設置:
我們的目標 URL 返回一個不涉及服務器語言的小型 HTML 文件。
運行這個測試,我們得到以下結果(請求/秒):
Apache Nginx
670.53 660.15
似乎 Nginx 和 Apache 的速度差不多!
但是資源使用情況呢?
運行此測試時,Apache 平均 CPU 使用率為 20% 和 18MB RAM:

Apache 平均 CPU 使用率
Nginx CPU 使用率平均為 12%,只有 8MB RAM:
Nginx CPU 使用率
雖然此基準測試可能無法代表所有實際用例,并且你應該考慮為你的特定設置運行自己的基準測試,但它可以讓你大致了解這些服務器的性能。
另外,Nginx wiki上有一篇文章比較了性能影響。

性能影響 Nginx 與 Apache
總之,如果你最關心的是性能和資源的有效利用,你應該考慮使用 Nginx。
兩臺服務器都具有一套很好的核心功能,對于大多數人來說應該足夠了。
但有時你需要一點額外的東西。
這就是你可以使用 modules 擴展兩個服務器的原因。
模塊可以編譯到主服務器二進制文件中,也可以作為動態模塊添加,可以與二進制文件分開安裝。
動態模塊更靈活,因為它們可以自行更新,你可以添加新模塊而無需重新編譯服務器。
大多數 Apache 模塊都是動態的,但 Nginx 最近(版本 1.9.11,2016 年發布)開始支持此功能。
現在,讓我們看一下兩個服務器的一些有用模塊。
兩種服務器都可以使用許多流行的模塊,因此在決定使用哪種服務器時,模塊可用性可能不是一個因素。
安裝新模塊:
向 Apache 添加新模塊比向 Nginx 添加新模塊更容易。
你可以從包存儲庫安裝 Apache 模塊,然后使用a2enmod命令啟用它并重新啟動服務器。
Nginx 可能需要你從源代碼編譯以安裝某些模塊,因為動態模塊必須針對你正在運行的 Nginx 的相同版本構建。
但是,你可以在非生產服務器上執行此操作,然后將動態模塊(.so 文件)復制到生產中。
如果你認為你需要經常更改模塊,則需要考慮這一點,但情況并非如此。
一款開源軟件的受歡迎程度很重要,因為最受歡迎的軟件通常會得到最多的關注。這可以轉化為更好的文檔,找到特定問題的解決方案的能力以及軟件本身的維護程度。
那么 Apache 和 Nginx 到底有多受歡迎?
根據 w3techs 的數據,Nginx 的市場份額一直在穩步增長,而Apache的市場份額卻在逐步下降。在2019年,Nginx的市場份額開始超過Apache。
網絡服務器使用
這些數據與全球整體 Web 服務器有關,但如果我們對排名前 100 萬的網站進行抽樣,Nginx 已經存在一段時間了:

使用 Nginx 的網站百分比
谷歌搜索趨勢似乎也反映了這一事實:

Google 搜索趨勢:Nginx 與 Apache
Netcraft 調查顯示,Apache 在 2019 年 4 月已被 Nginx 超越。
讓我們看一下 Apache 和 Nginx 最常見的用途,這將幫助你確定你的用例是否與服務器自然最擅長的用途相匹配。
Apache 的優勢:
mod_php如果它還不是你的發行版的默認安裝的一部分,則只需安裝它。.htaccess文件配置。Nginx 的優勢:
ngx_lua&等模塊輕松實現自定義邏輯ngx_mruby。Cloudflare在其自定義 WAF(Web 應用程序防火墻)中充分利用了這一點。在做出最終決定之前還需要考慮一些事項:
我們希望對你有用。
