Nginx vs Apache:頭對頭比較和如何選擇

更新時間:2022-04-19 / 文章作者:Timothy Shim

兩者皆是 Nginx的 阿帕奇 是具有豐富功能集和高性能的成熟產品。 它們共享共同的開源來源,您可以將它們部署在 Windows 或 Linux 服務器上。 

但是,一些關鍵差異可能會讓您選擇其中一個。

例如,Apache 是一個全面的解決方案,它支持許多開箱即用的不同技術和模塊。 相比之下,Nginx 依賴第三方模塊來擴展其功能。

看看哪個 Web服務器 可能更適合您的需求,讓我們更深入地研究這些選項。

Apache – 最初的 Hero Web 服務器

阿帕奇

創建於 1995 年 羅伯特·麥庫爾 Apache 最初被稱為“Apache HTTP 服務器項目”(因此得名),旨在創建一個強大的商業級服務器,即使進行修改也可以免費使用。 它迅速流行起來,因為它可以在許多不同的操作系統上運行,從 Unix 到 Windows。

由於這種長期流行,我認為 Apache 是“原始英雄”網絡服務器。 它是健壯的、有據可查的,並且在 Apache 軟件基金會的支持下得到了一個開放的開發者社區的支持。

Nginx——新時代的泰坦

Nginx的

Nginx(發音為“Engine X”)是 HTTP 和反向代理服務器、郵件代理服務器和通用 TCP/UDP 代理服務器,用於託管各種規模的網站和應用程序。 它首先由俄羅斯開發商公開發布 Igor Sysoev. Nginx 最初的目標是解決 Apache 難以管理的 C10K 問題。 

另請閱讀

Nginx 和 Apache 之間的顯著差異

建築

Nginx 和 Apache 在其核心架構上有一些相似之處。 例如,它們都使用主從進程來提高性能。 他們甚至有類似的配置文件。 然而,架構風格的差異導致了顯著的寬視角性能變化。

Nginx 具有資源友好的事件驅動架構,在負載下使用少量但恆定的內存。 此特性使其非常適合託管具有高流量水平或具有間歇性流量峰值的網站。

Apache 的進程驅動架構通過專用線程處理每個連接,這需要更多內存。 但是,它在具有更多 CPU 內核和 RAM 的機器上的重負載下可以更好地擴展。

內存使用情況

Nginx 以高性能和低資源消耗著稱。 另一方面,Apache 可能會佔用大量內存,尤其是在運行多個服務器塊時。 雖然兩者都使用內存來處理 HTTP 請求,但 Nginx 更輕量級。 

Apache 的設計意味著它為每個連接生成一個線程,並且每個線程將使用一定數量的 RAM。 隨著流量的增加,這可能會導致問題,因為需要更多的 RAM,尤其是在內存較少的服務器上。 Apache 還為每個請求創建新進程,即使來自同一個用戶。

相比之下,Nginx 使用一個進程一次處理多個連接。 

PHP 處理

因為這兩個 Web 服務器都主要與 PHP,他們如何處理代碼意味著巨大的性能潛力。 Nginx 默認不直接執行 PHP。 相反,它將請求傳遞給 PHP-FPM (FastCGI流程管理器),它處理請求並將響應發送回 Nginx,然後 Nginx 將內容返回給客戶端。

由於 Nginx 不等待 PHP-FPM 的響應來服務另一個請求(類似於它在提供靜態內容時不等待客戶端的響應),因此 Nginx 可以同時處理比 Apache 能夠管理的更多的請求。

Apache 使用一個名為 mod_php 的模塊來執行 PHP 代碼。 在此模型中,每次 HTTP 請求進入時,Apache 都會生成一個新進程或線程(取決於它的配置方式)來處理該請求。 該進程還負責處理該請求中的任何 PHP 請求。

這個模型有效,但它有一些缺點。 一方面,為每個請求生成一個新進程可能會在系統上佔用大量資源,尤其是在有許多同時請求的情況下。 為請求中的每個 PHP 請求生成一個新進程更加密集,因為操作系統必須為每個請求生成一個全新的解釋器。

如何在 Nginx 和 Apache 之間進行選擇

如您所見,這些 Web 服務器龐然大物之間沒有明顯的贏家。 這主要取決於您需要網絡服務器來管理什麼。 

在以下情況下選擇 Apache: 

  • 您正在運行一個中/大型網站,該網站可能會隨著時間的推移而顯著增長,並且需要自定義模塊。
  • 您在服務器中啟用了許多虛擬主機或模塊,並且在啟動時需要它們。
  • 您正在運行一個小型網站,不想花時間學習如何正確配置 Nginx。

在以下情況下使用 Nginx:

  • 您正在運行一個大型網站,並希望同時輕鬆配置緩存和負載平衡,而不必擔心硬件限制。

關於 Nginx 與 Apache 的最終想法

你是運行 Apache 還是 Nginx 取決於你的需求和你正在運行的硬件。 您可以使用任一選項為 PHP 網站提供服務。 但除此之外,還有很多事情需要考慮。 

如果您有一個簡單的網站,您可能不會注意到它們之間的任何區別。 但是,如果您的網站獲得更多流量並增長,您將需要了解每台服務器在負載下的性能和擴展情況。

另請閱讀

關於Timothy Shim

Timothy Shim是一位作家,編輯和科技愛好者。 從信息技術領域開始他的職業生涯,之後迅速地在印刷領域找到方向,並與國際,地區和國內媒體合作,包括ComputerWorld,PC.com,Business Today和The Asian. Banker。 他的專長在於消費者和企業的技術領域。