Nginx原始碼閱讀(模組)

2021-07-26 08:14:24 字數 2759 閱讀 9509

每個nginx模組,都是乙個ngx_module_t型別的變數。根據ngx_module_t的type,所有nginx模組可以分為5種型別:

type

ctx指向的資料結構

commands指向的資料結構

具體模組

ngx_event_core_module等

ngx_http_core_module等

ngx_mail_module

ngx_mail_module_t

ngx_command_t

ngx_mail_core_module等

// 用於初始化ngx_module_t的前7個成員變數

#define ngx_module_v1 ngx_module_unset_index, ngx_module_unset_index, null, 0, 0, nginx_version, ngx_module_signature

// 用於初始化ngx_module_t的後8個成員變數

#define ngx_module_v1_padding 0, 0, 0, 0, 0, 0, 0, 0

struct ngx_module_s ;

// 核心模組的ctx指向的資料結構

typedef struct ngx_core_module_t;

// 事件模組的ctx指向的資料結構

typedef struct ngx_event_module_t;

typedef struct ngx_event_actions_t;

// http模組的ctx指向的資料結構

// mail模組的ctx指向的資料結構

typedef struct ngx_mail_module_t;

// commands指向的資料結構

struct ngx_command_s ;

// 定義核心模組ngx_core_module

static ngx_command_t ngx_core_commands = ;

static ngx_core_module_t ngx_core_module_ctx = ;

ngx_module_t ngx_core_module = ;

// 定義核心模組ngx_errlog_module

static ngx_command_t ngx_errlog_commands = ;

static ngx_core_module_t ngx_errlog_module_ctx = ;

ngx_module_t ngx_errlog_module = ;

// 定義核心模組ngx_events_module

static ngx_command_t ngx_events_commands = ;

static ngx_core_module_t ngx_events_module_ctx = ;

ngx_module_t ngx_events_module = ;

// 定義核心模組ngx_openssl_module

static ngx_command_t ngx_openssl_commands = ;

static ngx_core_module_t ngx_openssl_module_ctx = ;

ngx_module_t ngx_openssl_module = ;

// 定義核心模組ngx_http_module

// 定義核心模組ngx_mail_module

static ngx_command_t ngx_mail_commands = ;

static ngx_core_module_t ngx_mail_module_ctx = ;

ngx_module_t ngx_mail_module = ;

// 定義配置模組ngx_conf_module,其中ctx為空

static ngx_command_t ngx_conf_commands = ;

ngx_module_t ngx_conf_module = ;

nginx原始碼閱讀

scr os unix下 ngx alloc.c 分配記憶體的封裝 ngx daemon c 建立守護程序。ngx thread cond.c 條件變數的封裝。ngx recv.c socket收的封裝 ngx send.c socket發的封裝 ngx shmem.c 共享記憶體的封裝 ngx s...

Nginx原始碼閱讀(Hello World程式)

於深入理解nginx第3章 在nginx 1.10.2目錄下新建mytest目錄,把config檔案和ngx http mytest module.c檔案放在mytest目錄下 在 usr local nginx conf nginx.conf中增加以下配置 定義http模組ngx http myt...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...