Nginx核心流程及模塊介紹
1. Nginx簡介以及特色
Nginx簡介:nginx
Nginx (engine x) 是一個高性能的web服務器和反向代理服務器,也是一個IMAP/POP3/SMTP服務器程序員
- 俄羅斯程序員Igor Sysoev於2002年開始
- Nginx是增加最快的Web服務器,市場份額已達33.3%
- 全球使用量排名第二2011年成立商業公司
Nginx社區分支:web
- 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模塊:
upstream模塊:
load_balance:
ngx_lua模塊:
- 腳本語言
- 內存開銷小
- 運行速度快
- 強大的 Lua 協程
- 非阻塞
- 業務邏輯以天然邏輯書寫