Nginx 架構——【核心流程+模組介紹】

java人生發表於2019-03-25

1. Nginx簡介以及特點

Nginx簡介:

Nginx (engine x) 是一個高效能的Web伺服器和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器

  • 俄羅斯程式設計師Igor Sysoev於2002年開始
  • Nginx是增長最快的Web伺服器,市場份額已達33.3%
  • 全球使用量排名第二2011年成立商業公司

Nginx社群分支:

  • Openresty作者@agentzh(章宜春)開發的,最大特點是引入了ngx_lua模組,支援使用lua開發外掛,並且集合了很多豐富的模組,以及lua庫。
  • Tengine主要是淘寶團隊開發。特點是融入了因淘寶自身的一些業務帶來的新功能。
  • Nginx官方版本,更新迭代比較快,並且提供免費版本和商業版本。

Nginx原始碼結構:

  • 程式碼量大約11萬行C程式碼
  • 原始碼目錄結構
  • core (主幹和基礎設定)
  • event (事件驅動模型和不同的IO複用模組)
  • http (HTTP伺服器和模組)
  • mail (郵件代理伺服器和模組)
  • os (作業系統相關的實現)
  • misc (雜項)

Nginx特點:

  • 反向代理,負載均衡器
  • 高可靠性、單master多worker模式
  • 高可擴充套件性、高度模組化
  • 非阻塞
  • 事件驅動
  • 低記憶體消耗
  • 熱部署
  • {看到文末本人總結了一一些資料!}

2. Nginx應用場景

場景如下:

  • 靜態檔案伺服器
  • 反向代理,負載均衡
  • 安全防禦
  • 智慧路由(企業級灰度測試、地圖POI一鍵切流)
  • 灰度釋出
  • 靜態化
  • 訊息推送
  • 圖片實時壓縮
  • 防盜鏈


3. Nginx框架模型及流程介紹

程式元件角色:

  • master程式
  • 監視工作程式的狀態
  • 當工作程式死掉後重啟一個新的
  • 處理訊號和通知工作程式
  • worker程式
  • 處理客戶端請求
  • 從主程式處獲得訊號做相應的事情
  • cache loader程式
  • 載入快取索引檔案資訊,然後退出
  • cache manager程式
  • 管理磁碟的快取大小,超過預定值大小後最少使用資料將被刪除

框架模型:

Nginx 架構——【核心流程+模組介紹】


框架模型流程:

Nginx 架構——【核心流程+模組介紹】


框架模型流程:

Nginx 架構——【核心流程+模組介紹】
Nginx 架構——【核心流程+模組介紹】

核心流程圖:

Nginx 架構——【核心流程+模組介紹】


Nginx 架構——【核心流程+模組介紹】

核心流程圖:

Nginx 架構——【核心流程+模組介紹】


Nginx 架構——【核心流程+模組介紹】

http請求流程:

Nginx 架構——【核心流程+模組介紹】


Nginx 架構——【核心流程+模組介紹】

Upstream設計:

  • 訪問第三方Server伺服器
  • 底層HTTP通訊非常完善
  • 非同步非阻塞
  • 上下游記憶體零拷貝,節省記憶體
  • 支援自定義模組開發
Nginx 架構——【核心流程+模組介紹】

upstream流程:


Nginx 架構——【核心流程+模組介紹】
Nginx 架構——【核心流程+模組介紹】

4. Nginx定製化模組開發

Nginx的模組化設計特點:

  • 高度抽象的模組介面
  • 模組介面非常簡單,具有很高的靈活性
  • 配置模組的設計
  • 核心模組介面的簡單化
  • 多層次、多類別的模組設計
Nginx 架構——【核心流程+模組介紹】

核心模組:

Nginx 架構——【核心流程+模組介紹】

handler模組:

接受來自客戶端的請求並構建響應頭和響應體。


Nginx 架構——【核心流程+模組介紹】

filter模組:

過濾(filter)模組是過濾響應頭和內容的模組,可以對回覆的頭和內容進行處理。它的處理時間在獲取回覆內容之後,向使用者傳送響應之前。



Nginx 架構——【核心流程+模組介紹】

upstream模組:

使nginx跨越單機的限制,完成網路資料的接收、處理和轉發,純非同步的訪問後端服務。



Nginx 架構——【核心流程+模組介紹】

load_balance:

負載均衡模組,實現特定的演算法,在眾多的後端伺服器中,選擇一個伺服器出來作為某個請求的轉發伺服器。



Nginx 架構——【核心流程+模組介紹】

ngx_lua模組:

  • 指令碼語言
  • 記憶體開銷小
  • 執行速度快
  • 強大的 Lua 協程
  • 非阻塞
  • 業務邏輯以自然邏輯書寫
Nginx 架構——【核心流程+模組介紹】

以上是個人對Nginx的一下見解,對Java感興趣的在這裡給大家免費分享一波福利,都是視訊資料,裡面就包涵了Java高併發、分散式、微服務、高效能、原始碼分析、JVM等技術資料

感興趣的加秋秋群:856443934【免費】獲取!

Nginx 架構——【核心流程+模組介紹】


相關文章