close

點擊上方藍字● 關注Linux公社



Apache vs Nginx 是當之無愧的話題。如果你對哪款服務器更適合你感到困惑,那麼久讓我們在本文中找出答案吧。
Apache 和 Nginx 是當今為互聯網提供動力的最流行的Web 服務器。他們共同負責為互聯網上超過 50% 的流量提供服務。但近年來,Apache 出現了下滑,取而代之的是 Nginx。從高層次上講,這兩個平台做的核心事情是相同的:託管和服務web內容。因此,在一個特定的場景中,兩者都具有獨特之處。

01

Apache:功能豐富的 Web 服務器

Apache 是一個模塊化、流程驅動的 Web 服務器應用程序,它為每個同時連接創建一個新線程。它支持許多功能。其中許多被編譯為單獨的模塊並擴展其核心功能。Apache 的模塊可以提供從服務器端編程語言支持到身份驗證機制的所有內容。
Apache Web 服務器是一個模塊化應用程序,管理員可以在其中選擇所需的功能並根據所需的特定功能安裝不同的模塊。所有模塊都可以編譯為與主 Apache 文件分開存在的動態共享對象(DSO)。強烈建議使用 DSO 方法,因為它使從服務器配置中添加/刪除/更新模塊的任務非常簡單。


Apache 架構的另一個基本特徵是過濾器,它允許模塊與其他模塊創建的內容進行交互。這種交互包括加密、病毒掃描以及靜態和動態內容的壓縮。
管理員經常選擇 Apache 是因為它的靈活性、功能和廣泛的支持。

相關:

在Ubuntu中使用mod_status模塊監視Apache性能 https://www.linuxmi.com/ubuntu-mod_status-apache.html

快速在Ubuntu 20.04上架設LAMP服務器及WordPress博客 https://www.linuxmi.com/ubuntu-20-04-lamp-wordpress.html

02

Nginx:專為性能和可擴展性而設計

Nginx 是俄羅斯軟件開發者 Igor Sysoev 創建的,旨在解決一個名為 C10K 的問題——服務器如何支持10000個並發連接,也就是concurrent 10000 connection(這也是c10k這個名字的由來)。它是專門為解決 Apache Web 服務器的性能限制而編寫的。該服務器於 2002 年首次創建為 rambler.ru 網站的擴展工具。

相關:

NGINX 之父 Igor Sysoev 已選擇退出 F5 公司 https://www.linuxmi.com/nginx-igor-sysoev-f5.html

如何在 Linux 上安裝 Nginx Web 服務器 https://www.linuxmi.com/linux-nginx-web-server.html

NGINX 是一個高性能的異步 Web 服務器。它使用事件驅動的架構來處理大量的連接。由於我們將在本文中看到的各種原因,它現在比 Apache Web Server 更受歡迎。

Nginx 主要用於提供靜態文件,但今天,它已經發展成為一個完整的 Web 服務器,可以處理所有服務器任務。如今,Nginx 也被用作反向代理、負載均衡器和 HTTP 緩存。在某些用例中,Nginx 還用作 Web 加速器或 SSL/TLS 終結器。

管理員經常選擇 Nginx 是因為它的資源效率和負載下的響應能力。


03

Apache 與 Nginx:詳細對比


架構

在 Apache 與 Nginx 的情況下,它們運行的兩個 Web 服務器的架構之間存在核心差異。
最重要的是,Apache 和 Nginx 之間的主要區別在於它們如何處理客戶端請求。Apache 使用流程驅動的方法並為每個請求創建一個新線程。而 NGINX 使用事件驅動架構在一個線程中處理多個請求。
在 Apache 中,單個線程只與一個連接相關聯,而 Nginx 中的單個線程可以處理多個連接。所有進程都與其他連接一起放入事件循環中,並進行異步管理。此過程消耗更少的內存,從而提高性能。
最重要的是,由於 Nginx 的內存消耗較低,它往往能夠同時處理更多的連接而不會使主機服務器過載。如果 Apache 面臨大量請求,它最終可能會消耗所有系統內存並要求將數據存儲在交換中,這會顯着降低性能。
性能:靜態/動態內容
Web 服務器的性能主要由兩個參數來判斷,即處理靜態內容和動態內容的能力。
靜態文件不需要處理,因此這對於測量服務器的響應時間很有用。那麼,每台服務器能以多快的速度交付小型靜態文件呢?當涉及到靜態內容時,這裡是 Nginx 的亮點,因為文件可以直接、快速地提供給客戶端。根據通過運行多達 1000 個同時連接執行的基準測試,Nginx 的執行速度比 Apache 快 2.5 倍。同時,RAM消耗更低。為了處理負載,Nginx 使用的系統內存減少了 5-6%。區別主要來自服務器架構。
對於顯示動態內容,測試結果顯示 Apache 與 Nginx 的性能完全相同。
Nginx 沒有任何原生處理動態內容的能力。它不是為動態內容的本地處理而設計的。Nginx 必須傳遞給外部處理器來處理 PHP和其他動態內容請求。這可能會使事情稍微複雜化,尤其是在嘗試預測允許的連接數量時。
與 Ngnix 不同,Apache 可以通過將 PHP 等語言的處理器嵌入到其每個工作實例中來處理動態內容。這允許它在 Web 服務器本身內執行動態內容,而無需依賴外部組件。
定製
Apache 具有動態加載的模塊,可以在需要時使用。該服務器支持許多不同的模塊,包括官方和第 3 方。這使得 Apache 成為一個非常可定製的平台,用戶可以根據自己的需要進行定製。這些模塊可用於重寫 URL、驗證客戶端、日誌記錄、緩存、強化服務器、壓縮、加密等。動態模塊可以大大擴展核心功能,而無需太多額外的工作。
Nginx 模塊需要集成到內核中,不能動態加載。要包含非標準模塊,用戶必須從源代碼編譯他們的服務器。
Nginx Web 服務器缺乏這種能力,使得 Apache 在這方面更加靈活。
配置
除了主配置文件之外, Apache 還允許通過.htaccess文件在每個目錄的基礎上進行附加配置。對.htaccess文件所做的更改會立即應用於系統。這些文件包括從重定向規則到內存限制等等的所有內容,並有效地允許 Web 服務器的分散配置。此外,此架構允許非特權用戶控制其網站的某些方面,而無需授予他們編輯主配置的權限。
然而,這種靈活性是以犧牲性能為代價的。每次.htaccess啟用文件時,Apache 必須遍歷整個目錄樹,從請求的 URL 或文件通過所有更高級別直到服務器的根目錄,然後為每個請求加載它們。
Nginx 不允許額外的配置。它的配置是集中的。你有一個管理整個過程的文件,這使它在這方面快得多,儘管靈活性要低得多。Nginx 的中央配置不如 Apache 使用的概念靈活,但它提供了明顯的安全優勢:只有獲得 root 權限的用戶才能更改 Web 服務器的配置。
由於 Nginx 中沒有目錄級別的配置,因此用戶通過將指令寫入主配置文件來執行所有配置更改。
支持
Apache 和 Nginx 都是文檔齊全的平台。管理員不太可能遇到問題或遇到無法在其文檔中找到答案的問題。

Apache HTTP 服務器文檔

Nginx 文檔

在操作系統支持方面,Apache 可以在 Linux 和 UNIX 等所有操作系統上運行,並且完全支持微軟 Windows。Nginx 也可以在幾個現代的類 Unix 系統上運行,並且支持 Windows,但它在 Windows 上的性能不如在 UNIX 平台上穩定。因此,如果你想在微軟 Windows 上運行功能豐富的開源 Web 服務器,Apache 確實是唯一的生產就緒選項。


04

Apache 和 Nginx 一起配合使用


但是,在比較 Apache 和 Nginx 時要記住的一件事是,它並不總是必須是非此即彼的決定。許多管理員將兩者結合在一個混合解決方案中,充分利用各自的優勢。
Apache 和 Nginx 可以並排使用來創建工作負載優化的服務器。你可以在 Apache 前面使用 Nginx 作為服務器代理,它利用 Nginx 的處理速度和處理大流量的能力。Nginx 處理和提供靜態內容,同時將動態內容轉發給 Apache(如下圖所示)。
Nginx 執行與 HTTP 相關的繁重工作——提供靜態文件、緩存內容和卸載慢速 HTTP 連接,以便 Apache 服務器可以在安全可靠的環境中運行應用程序代碼。

結論

在 Apache 與 Nginx 的比賽中,在切換服務器或服務器軟件時做出決定可能很困難。確定最適合你的服務器很大程度上取決於評估你的特定要求並確定最佳選擇。Apache 和 Nginx 都是開源的高性能 Web 服務器,能夠處理各種工作負載以滿足現代 Web 需求的需求。
如果你不需要很多 Web 服務器功能,Nginx 是你的最佳選擇。此外,在速度和性能方面,Nginx 也是明顯的贏家。它非常適合高流量網站。
Nginx 在許多方面都無法與功能豐富的 Apache 競爭,但它的異步狀態和單線程閃電般的快速架構使其成為超越 Apache 的明智選擇。
另一方面,Apache 可能是其他場景中首選的 Web 服務器。Apache 更適合共享託管環境,並且可以提供一個控制面板,從而更容易進行服務器端更改。
因此,在 Apache 和 Nginx 之間進行選擇之前,你需要仔細分析你的需求,你必須希望你的 Web 服務器服務於它們。

來自:Linux迷

鏈接:https://www.linuxmi.com/apache-vs-nginx-web-server.html
關注我們

長按或掃描下面的二維碼關注 Linux公社

關注 Linux公社,添加「 星標 」

每天 獲取 技術乾貨,讓我們一起成長

合作聯繫: root@linuxidc.net

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()