Nginx原始碼剖析 HTTP模組初始化概述

2021-08-10 15:09:40 字數 893 閱讀 5738

前面講了http模組配置結構體的組織以及各個server,location塊為了能夠實現快速查詢而使用的組織資料結構。這些內容都屬於http模組的初始化部分。除了之前講的內容之外,http初始化還包括其他內容。我們將在這部分講述這些內容。

對http模組的初始化是從『 http』關鍵字開始的。也就是說,當配置檔案解析器在配置檔案中讀到http關鍵字,則會開始根據http塊中的配置資訊初始化http模組。入口函式是ngx_http_block:

typedef struct  ngx_http_module_t;
我們將講解http模組初始化時是按什麼順序執行這些成員初始化函式的。

總的來說,http_block的工作主要分為兩部分,一部分是執行上述的ngx_http_module_t的成員函式完成對模組的初始化,其二是初始化與http相關的一些全域性資訊。當然,這些全域性資訊其實大多數也是儲存在http模組的配置結構體中的,只不過初始化時不需要呼叫ngx_http_module_t的成員函式。

裡面很多內容我們還沒有涉及到,比如變數,階段處理函式等等。後面我們會分別解釋這些內容。

執行完http_block函式,則http模組的所有初始化都結束了。包括各個location塊,server塊;http請求的各個處理階段的handler也已經就位;有關請求的各個header的處理函式也已經就位,等等。後面就可以根據這些初始化的東西對http請求進行處理了。

nginx原始碼剖析 1 概要

用 剖析 這個詞語有點大言不慚了。一直對伺服器程式設計感興趣,選擇nginx作為分析的物件是因為其效率比較高,量也比較合適 10w行左右 質量高,作者對效率要求非常高,對 也有異乎尋常的潔癖。打算寫成乙個系列,但是本人文件水平一直偏弱,而且寫在這裡主要目的也只是為了當作學習筆記記錄,所以如果各位看官...

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

Nginx原始碼剖析 記憶體池結構ngx pool t

struct ngx pool s ngx pool data t 結構 該結構就是包含了操作該記憶體池的資料的一些指標 typedef struct ngx pool data t ngx pool large t 結構 表示大塊記憶體 struct ngx pool large s ngx po...