在nginx core模块开发中,最重要的三个结构体分别是ngx_command_t、ngx_core_module_t、ngx_module_t。具体开发即围绕这三个结构展开。
此处我们结合具体的示例,说明三个结构的使用。
首先定义模块的指令集:
static ngx_command_t ngx_example_commands[] = {
{ ngx_string("example_command"), //指令名
NGX_MAIN_CONF|NGX_DIRECT_CONF|NGX_CONF_TAKE1, //指令属性
ngx_example_command_interface, //指令解析入口
0,
0,
NULL },
ngx_null_command
};
定义模块上下文,主要用于模块配置的创建和初始化
static ngx_core_module_t ngx_example_module_ctx = {
ngx_string("example_module"), //模块名
ngx_example_module_create_conf, //模块创建配置入口
ngx_example_module_init_conf //模块配置初始化入口
};
定义模块结构
ngx_module_t ngx_example_module= {
NGX_MODULE_V1,
&ngx_example_module_ctx, /* module context */
ngx_example_commands, /* module directives */
NGX_CORE_MODULE, /* module type */
NULL, /* init master */
NULL, /* init module */
NULL, /* init process */
NULL, /* init thread */
NULL, /* exit thread */
NULL, /* exit process */
NULL, /* exit master */
NGX_MODULE_V1_PADDING
};