nginx 整體架構

lenbkan發表於2024-11-10

Nginx 是什麼

Nginx 是一款 C 語言編寫高效能 Web 伺服器,反向代理伺服器。佔用記憶體少、併發能力強

使用場景

nginx主要有以下 4 個使用場景

  • 作為 Http 伺服器,可以提供靜態網頁和靜態資源的訪問
  • HTTP代理快取,快取服務端請求資料
  • 作為反向代理伺服器,將請求代理轉發
  • 作為負載均衡伺服器,將請求代理轉發到多個伺服器(最主要的使用場景)有多種使用方式,配置權重、hash路由等等

整體架構與核心元件

nginx 整體架構

Nginx 主要由一個 Master 程序 + N 個 Worker 程序組成

Master 程序不處理網路請求,而是負責與 Worker 程序的互動,主要有下面幾個功能:

  • 載入、過載配置
  • 載入、排程、監控、重啟 Worker 程序
  • 不停機更新(實現原理:透過 Master 程序 fork 出新的 Master 子程序來實現)

Woker 程序主要用來處理網路請求,一般來說,建議 woker程序的數量 = CPU的核數

Nginx 實現高效能的原因

  • 有多個 Worker 程序,各個程序處理請求互不影響
  • 是基於非同步的、非阻塞的事件驅動模型,類似於 Java 的 NIO 模型,依賴作業系統底層的事件模型(BSD kqueue、Linux epoll 及 Solaris event ports)
  • 有一個簡單的記憶體池模組,用來將多次想系統的記憶體請求合併成一次,從而降低 CPU 開銷

相關文章