首页 > 技术文章 > nginx源码分析:module机制

lit10050528 2018-03-27 21:53 原文

 根据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进行扩展。

推荐阅读