首頁  >  文章  >  運維  >  Nginx和Apache差別有哪些

Nginx和Apache差別有哪些

WBOY
WBOY轉載
2023-05-15 19:46:045545瀏覽

Nginx和Apache一樣,都是HTTP伺服器軟體,在功能實作上都採用模組化結構設計,都支援通用的語言接口,如PHP、Perl、Python等,同時也支援正向和反向代理、虛擬主機、URL重寫、壓縮傳輸、SSL加密傳輸等。

Apache 和 NGINX 的主要差異在於其設計架構。 Apache 使用進程驅動的方法,並為每個請求建立一個新執行緒。 NGINX 使用事件驅動的體系結構來處理一個執行緒中的多個請求。

Nginx和Apache差別有哪些

什麼是 Apache HTTP 伺服器?

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

什麼是 NGINX Web伺服器?

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

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

Nginx和Apache差別有哪些

基本架構

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

Apache

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

Nginx

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

贏家是 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!

Nginx和Apache差別有哪些

動態內容

Apache

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

Nginx和Apache差別有哪些

Nginx

它不處理動態內容,談到動態內容,Nginx 無法像Apache 一樣在Web 伺服器中處理動態內容。所有具有動態網頁內容的請求都會傳遞到外部進程(例如 PHP-FPM)執行。 Nginx 等待最終內容返回並交付給客戶端。如需清晰想法,請參閱此圖片:Nginx和Apache差別有哪些

當與 SCGI 處理程序和 FastCGI 模組一起使用時,NGINX 可以為動態內容提供服務。靜態:就靜態內容而言,Nginx 完勝 Apache。動態:兩者都擅長處理動態內容。

作業系統支援

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

Apache

支援所有與 Unix 一樣的系統,包括 Linux 和 BSD。它完全支援 MS-WindowsApache 運行在各種與 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 檔案覆寫特定目錄配置時,也可以看到對檔案系統位置的這種偏好。

Nginx和Apache差別有哪些

Nginx

透過 URI 來解釋請求,Nginx 被建立為 Web 伺服器和反向代理伺服器。由於這些架構的要求,Nginx主要使用你的眼睛。必要時轉換為系統。它不提供指定配置的機制。對於檔案系統目錄,則傳遞其 URI 本身。將請求(URI)而不是檔案系統位置傳遞,使Nginx能夠輕鬆地在 Web 和代理伺服器中運行。它透過佈局如何回應差異請求模式來簡單配置。 Nginx和Apache差別有哪些

它不會檢查檔案系統,直到它準備好服務的請求它解釋了為什麼它不實現任何形式的.htaccess檔案。這種將請求解釋為 URI 位置的設計使 Nginx 不僅能夠輕鬆地充當 Web 伺服器,還能夠用作代理伺服器、負載平衡器和 HTTP 快取。

此外,在 Apache vs Nginx 競賽中,NGINX 在傳輸速率(資料從伺服器傳送到客戶端的速度)方面再次獲勝。在大多數情況下,Nginx 以 500/100 的公平金額獲勝。

Nginx和Apache差別有哪些

贏家:似乎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 的快速處理速度和同時建立大無連線的能力。 Nginx和Apache差別有哪些

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

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

以上是Nginx和Apache差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除