跳至內容

Nginx

出自轻之舟百科
Nginx
中文名 Nginx
英文名 Nginx
其他名稱 engine x
開發者 Igor Sysoev[1]F5, Inc.[2]
首次發布 2004年10月4日[3]
程式語言 C[1]
作業系統 跨平台[1]
類型 Web伺服器、反向代理、負載均衡器
許可證 BSD類許可證[3]
網站 nginx.org

Nginx(讀作「engine x」)是一款高性能的開源Web伺服器軟體,同時也可作為反向代理伺服器、負載均衡器和HTTP緩存工具使用[3]。其最初由俄羅斯工程師Igor Sysoev為解決C10k問題(即同時處理一萬個並發連接的難題)而開發,旨在滿足當時俄羅斯高流量網站Rambler.ru的訪問需求[4][2]。Nginx以其事件驅動的異步非阻塞架構聞名,在高並發場景下能夠保持低內存占用和高穩定性,已成為驅動全球網際網路流量的核心基礎設施之一[5]

早期發展

[編輯 | 編輯原始碼]

Nginx的開發工作始於2002年,由Igor Sysoev在業餘時間進行。2004年10月4日,第一個公開版本0.1.0正式發布,原始碼以類BSD許可證的形式開放[3]。早期版本主要專注於解決Web伺服器的C10k問題,即如何高效處理大量並發連接[6]。到2008年9月,Nginx已為Rambler搜索門戶每日處理超過5億個請求[6]

商業化與收購

[編輯 | 編輯原始碼]

2011年,Igor Sysoev與美國企業家Gus Robertson共同創立了Nginx公司(Nginx, Inc.),為企業用戶提供商業支持和商業版本Nginx Plus[3]。2019年3月,應用交付網絡巨頭F5, Inc.以約6.7億美元的價格收購了Nginx公司[2],這一收購旨在將Nginx的軟體負載均衡能力與F5的硬體產品線整合,以增強其在多雲應用服務領域的競爭力。

核心功能

[編輯 | 編輯原始碼]

Web服務

[編輯 | 編輯原始碼]

作為Web伺服器,Nginx在處理靜態文件(如HTML、圖片、CSS和JavaScript)方面性能尤為突出,被證明比傳統的Apache伺服器快三倍以上[7]。通過sendfile等系統調用優化,Nginx能零拷貝地將文件從磁碟發送到網絡套接字,極大地提高了靜態內容的交付效率。

反向代理與負載均衡

[編輯 | 編輯原始碼]

Nginx可作為反向代理伺服器,接收客戶端請求並將其轉發至一個或多個後端伺服器[8]。在反向代理模式下,Nginx支持多種負載均衡算法,包括:

  • **輪詢(Round Robin)**:按順序將請求分發到後端伺服器。
  • **權重(Weight)**:為性能更強的伺服器分配更高權重,使其處理更多請求。
  • **IP哈希(IP Hash)**:確保來自同一客戶端的請求始終被發送到同一台後端伺服器,用於會話保持。

HTTP緩存

[編輯 | 編輯原始碼]

Nginx具備強大的緩存功能,能夠緩存後端伺服器(如ApacheTomcat)生成的動態內容[8]。通過配置緩存鍵和過期策略,Nginx可以大幅減輕後端應用伺服器的壓力,顯著提升用戶端的響應速度。

架構特性

[編輯 | 編輯原始碼]

Nginx採用**master-worker**多進程架構[9]。master進程負責讀取配置、綁定埠和監控worker進程;worker進程則基於epoll(Linux)或kqueue(BSD系統)等事件驅動模型,每個worker可以異步處理數千甚至數萬個並發連接。這種事件驅動的異步非阻塞模型是Nginx能夠高效處理高並發請求的關鍵[9]

模塊化設計

[編輯 | 編輯原始碼]

Nginx的核心功能非常精簡,大部分功能是通過模塊(Modules)來擴展的。從1.9.11版本(2015年底)開始,Nginx官方支持動態模塊加載(load_module指令)[10],允許在不重新編譯整個二進制文件的情況下添加或更新第三方模塊。

版本與分支

[編輯 | 編輯原始碼]

開源版本

[編輯 | 編輯原始碼]

Nginx開源版本分為兩個分支:

  • **Mainline version (主線版本)**:包含最新功能和改進,但可能含有尚未完全穩定的新代碼。
  • **Stable version (穩定版本)**:基於主線版本分支出來,經過更充分的測試,適用於生產環境。

Nginx Plus(商業版本)

[編輯 | 編輯原始碼]

Nginx Plus是F5提供的商業版本,在開源版本基礎上增加了額外的企業級功能,包括:

  • 高級負載均衡算法(如最少連接數、一致性哈希)。
  • 健康檢查和主動監控。
  • 基於JSON的實時監控儀錶板(live activity monitoring dashboard)。
  • 針對Kubernetes和微服務架構的強化支持。

OpenResty(第三方分支)

[編輯 | 編輯原始碼]

OpenResty是一個基於Nginx與LuaJIT的Web平台,由中國的章亦春(agentzh)創建並維護[11]。它將大量Lua庫集成到Nginx中,使開發者能夠直接在Nginx內部使用Lua腳本編寫業務邏輯,極大地擴展了Nginx的可編程性。

市場地位

[編輯 | 編輯原始碼]

Nginx是全球市場份額最大的Web伺服器之一。根據Netcraft在2023年的Web伺服器調查,Nginx以38.88%的市場份額位列第一,顯著領先於Apache的27.02%和Microsoft-IIS的9.99%[12]。另一家分析機構W3Techs的統計數據則顯示Nginx的市場份額約為34%,同樣位居榜首[13]

參考文獻

[編輯 | 編輯原始碼]