searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何实现一个NGX_CORE_MODULE

2023-08-02 05:57:05
20
0

在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
};

 

0条评论
0 / 1000
m****n
4文章数
0粉丝数
m****n
4 文章 | 0 粉丝
原创

如何实现一个NGX_CORE_MODULE

2023-08-02 05:57:05
20
0

在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
};

 

文章来自个人专栏
nginx源码学习
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0