nginx 模块

261 阅读2分钟

nginx模块的特性丰富,是因为有很多第三方开发者在为它开发第三方模块。

一、了解nginx模块

了解nginx的模块,要了解这些模块的哪些方面呢?

  • 是否提前被编译进nginx的二进制文件中。要在make之前,指定要编译进nginx二进制文件中的模块。

  • 该模块提供哪些配置项。

  • 该模块何时被使用。因为有的nginx模块,一旦被编译进nginx中,就会默认开启。而有些模块必须要进行配置,才会开启。

  • 该模块提供了哪些变量。

二、通过源码了解模块的指令

在源代码目录的src/http/modules下保存着使用的各个模块的c代码,像这样:

                                                           图1

在源代码中,有一个变量为ngx_command_t,该变量中保存着该模块支持的指令,但是支持的参数我没有看懂。。。。

这个ngx_command_t在每一个模块中是唯一存在的。

**三、**ngx_module_t和各模块的关系

                                                          图2

ngx_module_t是一个通用的结构体,在其他模块中被使用。

其他模块包括ngx_core_module_t等。

四、模块的分类

                                                        图3 

  • ngx_core_module是核心模块,其中定义出event、http等一类子模块。

  • ngx_conf_module是处理nginx.conf的模块。

  • ngx_event_module是用于处理事件的模块。

  • ngx_http_module是用于处理http请求的模块。请求处理模块的作用是生成响应,响应过滤模块是对响应进行特殊处理的模块,比如图片压缩、文件压缩等,upstream模块是做代理。

                                                                     图片1

在nginx的src中保存着nginx的源代码,其中core是nginx的核心模块,http、event、mail等都是核心模块core中定义的某一类子模块。http目录中保存着http相关模块的代码,http/modules中保存的都是可有可无的子模块,http下保存的都是必须要有的模块。