1. 程式人生 > >深入理解Nginx:模組開發與架構解析

深入理解Nginx:模組開發與架構解析

讀書筆記

第一部分

        Nginx能幫我們做什麼

第1章 研究Nginx前的準備工作

        1.1Nginx是什麼

        1.2為什麼選擇Nginx

        1.3準備工作

        1.4編譯安裝Nginx

        1.5configure詳解

        1.6Nginx的命令列控制

        1.7小結

第2章 Nginx的配置

        2.1執行中的Nginx程序間的關係

        2.2Nginx配置的通用語法

        2.3Nginx服務的基本配置

        2.4用HTTP核心模組配置一個靜態Web伺服器

        2.5用HTTP proxy module配置一個反向代理伺服器

        2.6小結

第二部分 如何編寫HTTP模組

第3章 開發一個簡單的HTTP模組

        3.1如何呼叫HTTP模組

        3.2準備工作

        3.3如何將自己的HTTP模組編譯進Nginx

        3.4HTTP模組的資料結構

        3.5定義自己的HTTP模組

        3.6處理使用者請求

        3.7傳送響應

        3.8將磁碟檔案作為包體傳送

        3.9用C++語言編寫HTTP模組

        3.10小結

第4章 配置、error日誌和請求上下文

        4.1http配置項的使用場景

        4.2怎樣使用http配置

        4.3HTTP配置模型

        4.4error日誌的用法

        4.5請求的上下文

        4.6小結

第5章 訪問第三方服務

        5.1upstream的使用方式

        5.2回撥方法的執行場景

        5.3使用upstream的示例

        5.4subrequest的使用方式

        5.5subrequest執行過程中的主要場景

        5.6subrequest使用的例子

        5.7小結

第6章 開發一個簡單的HTTP過濾模組

        6.1過濾模組的意義

        6.2過濾模組的呼叫順序

        6.3HTTP過濾模組的開發步驟

        6.4HTTP過濾模組的簡單例子

        6.5小結

第7章 Nginx提供的高階資料結構

        7.1Nginx提供的高階資料結構概述

        7.2ngx_queue_t雙向連結串列

        7.3ngx_array_t動態陣列

        7.4ngx_list_t單向連結串列

        7.5ngx_rbtree_t紅黑樹

        7.6ngx_radix_tree_t基數樹

        7.7支援萬用字元的散列表

        7.8小結

第三部分 深入Nginx

第8章 Nginx基礎架構

        8.1Web伺服器設計中的關鍵約束

        8.2Nginx的架構設計

        8.3Nginx框架中的核心結構體ngx_cycle_t

        8.4Nginx啟動時框架的處理流程

        8.5worker程序是如何工作的

        8.6master程序是如何工作的

        8.7ngx_pool_t記憶體池

        8.8小結

第9章 事件模組

        9.1事件處理框架概述

        9.2Nginx事件的定義

        9.3Nginx連線的定義

        9.4ngx_events_module核心模組

        9.5ngx_event_core_module事件模組

        9.6epoll事件驅動模組

        9.7定時器事件

        9.8事件驅動框架的處理流程

        9.9檔案的非同步I/O

        9.10TCP協議與Nginx

        9.11小結

第10章 HTTP框架的初始化

        10.1HTTP框架概述

        10.2管理HTTP模組的配置項

        10.3監聽埠的管理

        10.4server的快速檢索

        10.5location的快速檢索

        10.6HTTP請求的11個處理階段

        10.7HTTP框架的初始化流程

        10.8小結

第11章 HTTP框架的執行流程

        11.1HTTP框架執行流程概述

        11.2新連線建立時的行為

        11.3第一次可讀事件的處理

        11.4接收HTTP請求行

        11.5接收HTTP頭部

        11.6處理HTTP請求

        11.7subrequest與post請求

        11.8處理HTTP包體

        11.9傳送HTTP響應

        11.10結束HTTP請求

        11.11小結

第12章 upstream機制的設計與實現

        12.1upstream機制概述

        12.2啟動upstream

        12.3與上游伺服器建立連線

        12.4傳送請求到上游伺服器

        12.5接收上游伺服器的響應頭部

        12.6不轉發響應時的處理流程

        12.7以下游網速優先來轉發響應

        12.8以上游網速優先來轉發響應

        12.9結束upstream請求

        12.10小結

第13章 郵件代理模組

        13.1郵件代理伺服器的功能

        13.2郵件模組的處理框架

        13.3初始化請求

        13.4接收並解析客戶端請求

        13.5郵件認證

        13.6與上游郵件伺服器間的認證互動

        13.7透傳上游郵件伺服器與客戶端間的流

        13.8小結

第14章 程序間的通訊機制

        14.1概述

        14.2共享記憶體

        14.3原子操作

        14.4Nginx頻道

        14.5訊號

        14.6訊號量

        14.7檔案鎖

        14.8互斥鎖

        14.9小結

第15章 變數

        15.1使用內部變數開發模組

        15.2內部變數工作原理

        15.3定義內部變數

        15.4外部變數與指令碼引擎

        15.5小結

第16章 slab共享記憶體

        16.1操作slab共享記憶體的方法

        16.2使用slab共享記憶體池的例子

        16.3slab記憶體管理的實現原理

        16.4小結