Apache Vs Nginx哪個最適合您的 Web 伺服器?

安全劍客發表於2020-09-08
在這篇文章中,我將討論阿帕奇和NGINX伺服器的區別。哪個是最快的 Web 伺服器?它們的主要優點和限制是什麼?你應該去哪一個?

Apache 和 NGINX 的主要區別在於其設計架構。Apache 使用程式驅動的方法,併為每個請求建立一個新執行緒。NGINX 使用事件驅動的體系結構來處理一個執行緒中的多個請求。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

什麼是 Apache HTTP 伺服器?

Apache HTTP 伺服器是一種開源跨平臺 Web 伺服器,也稱為"httpd"和 Apache。他是Apache 軟體基金會管理其品牌和服務。伺服器由 ASF 下的開放開發人員社群開發和維護。Apache 主要執行在   上,它支援全球 46% 的網站。它是 LAMP(Linux、Apache、MySQL、PHP)堆疊的關鍵元件。

什麼是 NGINX Web伺服器?

什麼是NGINX?發音為? 它的發音是 “Engine X” 它是伊戈爾·西索耶夫在 2004 年釋出的 Web 伺服器。今天,它不僅僅是一個網路伺服器!起初,人們大多使用 Nginx 作為Apache的補充.它主要用於提供靜態檔案,但今天,它已演變為一個完整的Web伺服器,處理整個web伺服器任務。Nginx 經常用作反向代理、負載均衡器、郵件代理和 HTTP 快取。Apache和Nginx都是Linux最常見的網路伺服器。它們共同為網路流量的 50%以上提供服務。

雖然阿帕奇和NGINX有許多共同的品質,但在許多方面是不同的。每個都以自己的方式出類拔萃,並有自己的用途和方案。為了瞭解差異並得出結論,讓我們透過下面的詳細、端到端的比較。我們還提到每個點結束時每個比較點的優勝者。

Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

基本架構

當談到Apache 和Nginx 時,根本區別在於他們的設計架構。這意味著它們的實際處理連線和流量以及響應不同的流量條件的方式不同。一種是過程驅動的方法,另一個是事件驅動的體系結構。

Apache

流程驅動方法,為每個請求建立一個新執行緒。
Apache 採用多執行緒方法。它提供各種多個處理模組。這些預模組基本上是三種型別的請求處理演算法。每個都用於不同的伺服器需求。MM(多處理模組)提供了一個靈活的架構,用於選擇不同的連線和不同的處理演算法。此外,不同版本的 Apache 2 採用不同的遊行模組。
三個主要的 Apache MM 是:過程(預叉) MPM、工人 MPM、事件 MPM 。
預設情況下,Apache 2.2 配置為預叉模式(mpm_prefork)。它響應一組程式,每個程式一次可以處理單個請求。換句話說,Apache 每次都會建立一個新執行緒來處理每個連線請求。執行緒是可由排程程式獨立管理的最小程式設計指令序列。在大多數情況下,執行緒是程式的元件。但是,Apache 的基本體系結構可能導致大量資源消耗,因此,可能會導致伺服器的問題(例如速度慢)。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

Nginx

事件驅動方法,在一個執行緒內處理多個請求,Nginx 使用事件驅動的體系結構,並非同步處理請求。
它旨在使用非阻塞事件驅動連線處理演算法。因此,其程式可以在一個處理執行緒中處理數千個連線(請求)。這種連線過程模組使 Nginx 能夠以有限的資源快速、寬工作。此外,您還可以在低功耗系統上和在重負載下執行的系統上使用 Nginx。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

贏家是 NGiNX – 它的結構輕量級,架構比 Apache 快得多。
效能以 Apache vs Nginx 來說,兩個 Web 伺服器對靜態和動態內容處理方式都不同。他們說 Nginx 在處理靜態內容時更好, 讓我們看看這是真的!

靜態內容
Apache

使用基於檔案的方法提供靜態內容,靜態內容或檔案通常是儲存在伺服器計算機上磁碟上的檔案,例如 CSS 檔案、JavaScripts 檔案或影像。Apache 使用其傳統的基於檔案的方法處理靜態內容。

Nginx

在提供靜態內容時, Nginx 是大哥。由於 Nginx 的設計架構更有能力處理負載,因此在提供靜態內容方面速度要快得多。根據高達 1,000 個同時連線的基準測試,其效能比 Apache 快 2.5 倍。Nginx 為靜態資源服務,而 PHP 無需瞭解這一點。另一方面,Apache 以昂貴的開銷處理所有這些請求。這使得 Nginx 更加有效,對系統資源的要求更低。

這個小影像顯示的是靜態內容請求,以秒處理。Nginx 顯然在這裡超過了Apache!

Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

動態內容
Apache

Apache 可以在 Web 伺服器本身中處理動態內容,而無需依賴任何外部元件。所以,它可以處理你的本身。談論 Apache vs Nginx 效能:在考慮動態內容處理時,Nginx(如果不是更好的話)幾乎相等。
下面是對動態內容請求數的比較。貌上沒什麼區別。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

Nginx

它不處理動態內容,談到動態內容,Nginx 無法像 Apache 那樣在 Web 伺服器中處理動態內容。所有具有動態網頁內容的請求都傳遞到外部程式(例如 PHP-FPM)執行。Nginx 等待最終內容返回並交付給客戶端。有關清晰想法,請參閱此影像:
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?
當與 SCGI 處理程式和 FastCGI 模組一起使用時,NGINX 可以為動態內容提供服務。
靜態:就靜態內容而言,Nginx 完勝 Apache。
動態:兩者都擅長處理動態內容。

作業系統支援

作業系統支援可能是需要考慮的重要一點,尤其是在比較 Apache 與 Nginx 時。但是,他們兩個幾乎相似在這裡。

Apache

支援所有與 Unix 一樣的系統,包括 Linux 和 BSD。它完全支援 MS-Windows
Apache 執行在各種與 Unix 一樣的系統(例如 Linux 或 BSD)上執行,並且完全支援微軟 Windows。

Nginx

支援幾乎所有與 Unix 一樣作業系統。部分支援 Windows。
它還在幾個現代 Unix 的系統上執行,並且對 Windows 有一些支援,但其 Windows 效能不像其他平臺那樣強大。

贏家是Apache在這裡獲勝。

分散式/集中配置

阿帕奇 vs Nginx 是一個當之無愧的話題。他們的配置使他們彼此不同,使他們同樣有趣。讓我們看看誰的配置更容易、更快。

Apache

透過 .htaccess 檔案允許基於每個目錄進行其他配置。
此體系結構允許非特權使用者控制其網站的某些方面,而無需授予他們編輯主配置的許可權。這個很大!

Nginx

不允許進行其他配置
另一方面,它有一個缺點。它不提供其他配置。然而,它有利於你,因為這增加了效能。
透過不允許目錄配置,它可以比 Apache 更快地提供請求。它不需要搜尋 .htaccess 檔案並解釋使用者製作的 req。

贏家:
如果考慮配置,可進行 Apache;如果考慮了配置,可進行 APache。如果速度是 NGinx。

請求解釋

在 Apache vs Nginx 辯論中,解釋請求的方法是一個有趣的話題進行比較。它們都以完全不同的方式處理和解釋請求。

他們不同的方法使他們獨特,也使一個比另一個更好一點。讓我們來探索一下!

Apache

傳遞檔案系統位置,提供解釋要求的能力。作為檔案系統位置的物理資源,可能需要更抽象的評估。它將請求作為檔案系統位置傳遞。

當然,Apache 確實使用 URI 位置,但它們通常用於更抽象的資源。在建立或配置虛擬主機時,Apache 使用文件根目錄下的目錄塊。

在使用 .htaccess 檔案覆蓋特定目錄配置時,也可以看到對檔案系統位置的這種偏好。

Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

Nginx

透過 URI 來解釋請求,Nginx 被建立為 Web 伺服器和反向代理伺服器。由於這些架構的要求,Nginx主要使用你的眼睛。必要時轉換為系統。它不提供指定配置的機制。對於檔案系統目錄,則傳遞其 URI 本身。將請求(URI)而不是檔案系統位置傳遞,使Nginx能夠輕鬆地在 Web 和代理伺服器中執行。它透過佈局如何響應差異請求模式來簡單配置。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?它不會檢查檔案系統,直到它準備好服務的請求它解釋了為什麼它不實現任何形式的.htaccess檔案。
這種將請求解釋為 URI 位置的設計使 Nginx 不僅能夠輕鬆地充當 Web 伺服器,還能夠用作代理伺服器、負載均衡器和 HTTP 快取。

此外,在 Apache vs Nginx 競賽中,NGINX 在傳輸速率(資料從伺服器傳送到客戶端的速度)方面再次獲勝。在大多數情況下,Nginx 以 500/100 的公平金額獲勝。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?
贏家:似乎Nginx贏了, 因為它的解釋和反應更快。

功能模組

兩者都是透過模組系統可擴充套件的。但他們的工作方式是不同的。讓我們比較兩個 Web 伺服器的功能模組: Apache vs Nginx!

Apache

60 個可動態載入的官方模組,可開啟/關閉
Apache 伺服器具有一組豐富的功能,可以透過安裝 60 個官方模組之一來啟用這些功能。還有許多其他非官方的模組,可以很容易地在網際網路上找到。

其模組系統允許您動態載入或解除安裝模組,以滿足您的需求。其模組可以開啟或關閉以新增或刪除功能,並連線到主伺服器。

簡而言之,Apache 有幾個功能模組可滿足您的需求,但許多模組並不經常使用。

Nginx

第三方核心模組(不可動態載入)
另一方面,Nginx被挑選並編譯為第三方外掛的過程。不可動態載入。這些模組很有用,但是,它們允許您僅包括要使用的功能來決定從伺服器獲得什麼內容。
它被認為比 Apache 伺服器安全得多,因為任意元件可以在伺服器中連線。此外,NGINX 還提供 Web 伺服器的所有核心功能,而不會犧牲成功所需的輕量級和高效能特性。Apache 就像微軟 Word,Nginx 就像記事本。Apache 有一百萬個選項,但你只需要幾個。Nginx 做這些 "幾個" 的事情, 做他們比阿帕奇快 50 倍。

贏家:NGiNX – 它不太重要,但功能和模組使它比 Apache 更輕、更智慧、更好的 Web 伺服器。

靈活性

靈活性是 Web 伺服器最重要的問題之一。Apache vs Nginx 靈活性有一些有趣的差異。

Apache

支援透過動態模組自定義 Web 伺服器。
可以透過騎乘模組對 Web 伺服器進行自定義。Apache 的動態模組載入時間最長,因此所有 Apache 模組都支援此功能。

Nginx

不夠靈活,無法支援動態模組和載入。
然而,NGINX的情況並非如此。2016 年初,NGINX 獲得動態模組載入支援;以前,NGINX 要求管理員將模組編譯為 NGINX 二進位制檔案。大多數模組尚不支援動態載入,但隨著時間的推移,它們可能會支援動態載入。
贏家:Apache – 它顯然在這一點上領先。

安全

Apache vs Nginx 安全性再次成為爭論的話題。嗯,這兩個 Web 伺服器都為基於 C 的程式碼庫提供了出色的擴充套件安全性。

Apache

非常安全。
Apache 確保所有在其伺服器上執行的網站都是安全的,不會受到任何傷害和駭客攻擊。
因此,它提供了用於 DDoS 攻擊處理的配置提示,以及用於響應 HTTP DoS、DDoS 或暴力攻擊的 mod_evasive 模組。

NGINX

最少的程式碼實現更好的安全。
然而,NGINX的程式碼庫明顯小了幾個數量級,所以從前瞻性的安全形度來看,這絕對是一個很大的優勢。NGINX還列出了最近的安全建議。在Nginx部落格上閱讀一篇關於抵禦DDoS攻擊的文章。
贏家:Nginx–它被認為更安全

支援

支援是每個客戶都渴望得到的。它可以改變或破壞你的使用者體驗。在比較Apache和Nginx支援時,似乎沒有太大區別。

Apache

社群支援透過郵件列表、IRC和堆疊溢位完成。
商業Apache支援可以從許多第三方公司獲得,比如OpenLogic,但是Apache基金會沒有維護官方列表。Apache伺服器旨在為其所有使用者提供強大的支援。

Nginx

透過郵件列表、IRC、堆疊溢位和論壇提供社群支援。
NGINX 背後的公司提供名為 NGINX Plus 的商業產品,該產品支援一組有關負載平衡、媒體流和監控的額外功能。

贏家:!兩者的支援幾乎相同。兩個 Web 伺服器都很棒。

最終

Apache和nginx都無法被對方取代, 他們有他們的強弱。在瞭解好處、限制和差異之後,您可能已經擁有了最適合您的 Web 伺服器的想法。

在我們關於Apache對 Nginx 的帖子中, 9分中的5分被 Nginx 贏得, 2 分被Apache和nginx "平局" 。因此,我們可以清楚地看到,NGINX領先Apache。

何時選擇

仍然困惑於哪臺伺服器更適合您的解決方案?讓瞭解一下 - 何時選擇!

何時選擇阿帕奇而不是 Nginx?

i) 阿帕奇.

NGINX 不支援類似 Apache 的.htaccess 檔案。但是,使用 Apache,您可以獲得優勢,讓非特權使用者控制其網站的某些重要方面。

顯然,使用者不允許編輯主配置。
使用 .htaccess 檔案,可以基於每個目錄覆蓋系統範圍的設定。
為了獲得最佳效能,請將這些 .htaccess 指令包括在主配置檔案中。
在共享託管環境中,Apache 由於其 .htaccess 配置而效果更好。
P.S.對於專用主機或VPS Nginx保持最好的選擇。

ii) 在功能限制的情況下 = 使用 Apache

Nginx 有一些非常重要的核心模組。然而, Nginx 有一些功能限制。

如果存在某些限制或需要使用 Nginx 不支援的額外模組,則可能需要選擇 Apache 代替。

何時選擇 Nginx 而不是阿帕奇?

i) 快速靜態內容處理

Nginx 在處理來自特定目錄的靜態檔案方面可以執行更好的工作。

此外,上游伺服器程式不會被阻止,因為大量靜態內容請求,因為 Nginx 可以同時處理它們。這顯著提高了後端伺服器的整體效能。

Nginx 不斷努力為使用者提供更好的體驗。2018年,它顯示出了顯著的增長。在 Nginx部落格上瀏覽一下 2018年的主要要點。

ii) 非常適合高流量網站

如果我們談論的速度和多少客戶可以服務在高負載,Nginx將永遠閃耀作為贏家超過阿帕奇。

這使得 Nginx 具有顯著輕量級,非常適合伺服器資源。這就是為什麼大多數 Web 開發人員更喜歡 Nginx 而不是 Apache。

特別是,如今的電子商店僱傭了一位Magento開發者,他們知道如何在高流量的網站上工作,並擅長在Nginx上工作。

簡言之,當涉及到服務一個有大量的流量的網站,有沒有擊敗Nginx。

或者同時使用

同時使用,透過將每個伺服器的優勢一起使用,可以使用它們。

您可以將 Apache 前面的 Nginx 用作伺服器代理(如下圖所示)。這利用了 Nginx 的快速處理速度和同時建立大無連線的能力。
Apache Vs Nginx哪個最適合您的 Web 伺服器?Apache Vs Nginx哪個最適合您的 Web 伺服器?

對於靜態連線,Nginx 會將檔案快速服務到客戶端。對於動態內容,例如 Php 檔案,Nginx 反向代理伺服器會將他們的請求代理到 Apache,然後 Apache 可以處理其結果並返回其呈現的頁面。

然後,Nginx 可以將最終內容傳遞給客戶端。此外,它允許您有一個非常實用的網路伺服器,以服務您的客戶(大量使用者)非常快。

最後

決定您將使用哪個 Web 伺服器,Nginx 或 Apache 是設定網站的重要步驟。

這兩種解決方案都能夠處理不同的工作負載,並與其他軟體合作,以提供完整的 Web 堆疊。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2718102/,如需轉載,請註明出處,否則將追究法律責任。

相關文章