nginx module

黄向明
2023-12-01

       nginx 支持模块化,系统中的很多功能就是一个模块,比如event、http、email 等,可以看出,模块在nginx中重要性,模块的定义在 src/core/ngx_conf_file.h中,

 

    

 

 

    index 表示模块的索引号,就好比我们再公司中的的工号。最小的是从0开始的

 

    ctx_index  表示分类索引号,它表示了模块在该类模块中的索引号。比如我们在公司有了工号,在一个部门内部,为了内部管理的方便,给了你一个部门的编号。

 

    spare0,.....spare3 ,version  它们应该是版本相关的信息,待进一步考证。

 

    ctx 模块的上下文,不同的模块具有不同的上下文,所以这里使用了void* 表示,比如我们前面说的四种模块,就有四种模块上下文,分别是

ngx_core_module_t、ngx_event_module_t、ngx_http_module_t、 ngx_mail_module_t。模块上下文主要存放一些函数,这样可以实现对应模块的一些功能,比如core模块中创建模块的配置以及初始化配置都可以在上下文中做。

 

    command  模块的命令集。模块的很多行为需要用户指定和控制,这些命令集就是提供给用户的接口,用户通过配置文件,可以调用这些命令集,实现对模块的控制。

 

    type 模块的类型,就是上面介绍的core、mail、 event 和http

 

    init_master、 init_module、init_process、init_thread、exit_thread、exit_process、 exit_master是函数指针,它们初始化master、模块初始化、进程初始化、线程初始化、线程退出、进程退出、master退出等。模块并不是需要所有这些函数的,只是需要才进行定义就可以。

 

    spare_hook0 -- spare_hook7 填充?待考证。

 

 

    下面详细介绍下模块的上下文

    1  ngx_core_module_t;

   

    只有名字,模块配置的创建和初始化函数

 

    2  ngx_event_module_t

    

     和core相比,就多了一个actions,这个在后面再介绍。

 

      3  ngx_http_module_t

     

      因为http的配置比较复杂,包括主配置、service配置和location配置,所以这里的函数也比较的多

 

      4 ngx_mail_module_t

     

 

      从上面的介绍可以看出,模块的上下文主要做一些模块信息的创建、初始化的工作,各个模块可以根据需求进行定制。

 

 

      最后我们看看这四个模块

 

    

    core模块比较简单,所有的函数都是空的。

 

    

     event也模块比较简单,所有的函数都是空的。

 

    

    http 也模块比较简单,所有的函数都是空的。

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

   

 

 

 

 类似资料:

相关阅读

相关文章

相关问答