Nginx模块管理和进程管理

前言


Nginx和Apache一样,同样使用模块化管理,但是和Apache“热插拔”(每次添加模块的时候,不需要重新编译,只需要重新载入即可)的方式不同,Nginx每次添加一个模块或删除一个模块的话都需要重新编译才可以适用相应的功能模块。

上一篇(Nginx的源码结构和模块初始化 )已经说了Nginx的主要模块包括core、event、http、mail和misc(杂项),而每一个模块根据需要又有很多模块,这5类模块只有core是不可以禁止,其他的模块可以根据实际情况进行选择。

选择适用Nginx的模块


在Nginx(1.8.0)目录下适用./configure –help可以查看哪些模块已经被安装:

在上边的信息中,–with-XXX表示启用,–without-XXX则表示禁用,咋这里边所有–with-XXX的模块在默认安装的时候都没有安装,而所有–without-XXX的模块则表示在默认安装是已经被选入的模块,因此,要注意这个规则。另外还有既有–with-XXX还有–without-XXX的,那么这个选择就不是我们选择的了,在安装的时候根据系统的情况会自己安装的。

Nginx安装第三方模块


在对Nginx进行configure配置编译的时候,有一个参数–add-module,就是用来调价第三方模块的,例如:

–add-module=/root/nginx-accesskey-2.0.3

这个是防盗链的模块,安装就这么简单。

Nginx的进程管理


Nginx分为Single和Master两种进程模式,Single为单进程方式工作,通过ngx_single_process_cycle完成,Master模型即是一个master进程和多个worker进程,在实际的开发过程中使用Master方式。

Nginx在运行在Linux内核版本2.6以上的机子上使用的是epoll模型,所谓epoll模型就是“老板和下属”的类型,老板接活下属来做。