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

1. Nginx簡介以及特色

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進程
  • 管理磁盤的緩存大小,超過預約值大小後最少使用數據將被刪除

框架模型:併發


框架模型流程:負載均衡


框架模型流程:

核心流程圖:


核心流程圖:


http請求流程:


Upstream設計:

  • 訪問第三方Server服務器
  • 底層HTTP通訊很是完善
  • 異步非阻塞
  • 上下游內存零拷貝,節省內存
  • 支持自定義模塊開發

upstream流程:


4. Nginx定製化模塊開發

Nginx的模塊化設計特色:

  • 高度抽象的模塊接口
  • 模塊接口很是簡單,具備很高的靈活性
  • 配置模塊的設計
  • 核心模塊接口的簡單化
  • 多層次、多類別的模塊設計

核心模塊:

handler模塊:

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


filter模塊:

過濾(filter)模塊是過濾響應頭和內容的模塊,能夠對回覆的頭和內容進行處理。它的處理時間在獲取回覆內容以後,向用戶發送響應以前。



upstream模塊:

使nginx跨越單機的限制,完成網絡數據的接收、處理和轉發,純異步的訪問後端服務。



load_balance:

負載均衡模塊,實現特定的算法,在衆多的後端服務器中,選擇一個服務器出來做爲某個請求的轉發服務器。



ngx_lua模塊:

  • 腳本語言
  • 內存開銷小
  • 運行速度快
  • 強大的 Lua 協程
  • 非阻塞
  • 業務邏輯以天然邏輯書寫

以上是我的對Nginx的一下看法,對Java感興趣的在這裏給你們免費分享一波福利,都是視頻資料,裏面就包涵了Java高併發、分佈式、微服務、高性能、源碼分析、JVM等技術資料

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

相關文章
相關標籤/搜索