nginx原始碼分析 module機制

2021-09-08 13:58:56 字數 1036 閱讀 7212

根據nginx官方文件,新增乙個module的介紹,當我們需要新增乙個module時,需要以下操作:

1、為該module新建乙個目錄。

2、新增乙個config檔案,乙個module核心**原始檔。

3、為configure新增引數--add-module=/path/to/module,然後重新編譯。

這個操作步驟我們都很熟悉,那麼為什麼這樣操作後就可以把這個module新增到nginx中呢?

執行configure後,會在nginx原始碼目錄下objs目錄下生成乙個ngx_modules.c檔案,該檔案中包含了nginx編譯時需要編譯進去的modules。

當我們新增了--add-module=/path/to/module之後,會把該module新增到ngx_modules.c檔案中。

該檔案是原始檔,包含了ngx_modules的定義,在src/core/ngx_module.h中包含ngx_modules的宣告,這樣在其他地方就可以引用ngx_modules,下面會看到引用它的地方。

然後在ngx_preinit_modules函式中,設定了ngx_modules中的各個module的索引和名字。

然後,在ngx_cycle_modules函式中將ngx_moduels拷貝到cycle->modules中。

最後,在ngx_init_modules函式中呼叫每個module的init函式進行初始化。

到此為止,nginx module的機制就介紹完了,可以看到這種設計非常方便對nginx進行擴充套件。

nginx 原始碼分析

近期準備研究一下nginx原始碼,此處記錄一下。計畫 1 了解evan miller 的文章 2 了解nginx的組織架構 3 了解nginx的基本資料結構 4 熟悉nginx的主要module及執行機制,主要是core http event os 5 簡單的module開發及測試 一 準備 為了方...

nginx原始碼分析 從原始碼看nginx框架總結

nginx原始碼總結 1 中沒有特別繞特別彆扭的編碼實現,從變數的定義呼叫函式的實現封裝,都非常恰當,比如從函式命名或者變數命名就可以看出來定義的大體意義,函式的基本功能,再好的架構實現在編碼習慣差的人實現也會黯然失色,如果透徹理解 的實現,領悟架構的設計初衷,覺得每塊 就想經過耐心雕琢一樣,不僅僅...

Nginx原始碼分析 connections陣列

本文的標題讓我糾結了好久,不知道是connections陣列合適,還是connections鍊錶更合適 nginx在此或多或少的注入了二者的特點,先不管是叫陣列還是叫鍊錶吧,只要能夠弄明白這個connections是怎麼回事就大功告成。nginx的每個worker程序都使用乙個相同的connecti...