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程式
- 管理磁碟的快取大小,超過預定值大小後最少使用資料將被刪除
框架模型:

框架模型流程:

框架模型流程:


核心流程圖:


核心流程圖:


http請求流程:


Upstream設計:
- 訪問第三方Server伺服器
- 底層HTTP通訊非常完善
- 非同步非阻塞
- 上下游記憶體零拷貝,節省記憶體
- 支援自定義模組開發

upstream流程:


4. Nginx定製化模組開發
Nginx的模組化設計特點:
- 高度抽象的模組介面
- 模組介面非常簡單,具有很高的靈活性
- 配置模組的設計
- 核心模組介面的簡單化
- 多層次、多類別的模組設計

核心模組:

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

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

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

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

ngx_lua模組:
- 指令碼語言
- 記憶體開銷小
- 執行速度快
- 強大的 Lua 協程
- 非阻塞
- 業務邏輯以自然邏輯書寫

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