nginx的模块大致分几类:
- 核心模块:服务器运行最基础和核心的模块,如进程管理、权限控制等
- 标准http模块:支持http的标准功能
- 可选http模块:用于扩展标准http功能
- 邮件服务模块:用于支持nginx的邮件服务
- 第三方模块:第三方功能模块,实现自定义的功能模块
一般模块命名规则
以ngx_开头,_module结尾,中间使用英文名称描述模块功能作用。如ngx_core_module,ngx_events_module。
在我们编译的nginx_1.21.1文件夹下可以看到http模块的源码,在src目录下,分7个子文件夹。
[root@localhost src]# ls
core event http mail misc os stream
核心模块提供nginx核心支持。
标准http模块默认是被编译到nginx中,除非编译时使用--without-xxx声明不编译。
可选http模块,提供源码但是不会自动编译,需要在编译时使用--with-xxx启用相关模块。
邮件服务模块,默认不编译。
第三方模块,需要下载源码编译时添加安装。
nginx的web请求处理方式
nginx采用多进程技术和异步非阻塞方式进行请求处理。大大提高了nginx处理请求的效率和速度。
多进程:
在nginx启动时生成一个主进程(master process)和多个工作进程(worker proess)。工作进程用于接收和处理客户端请求。
异步非阻塞:
客户端发送请求之后,无须等等服务器端响应可以进行其它操作,服务器端如果无法立即返回结果也进行其它的工作,返回结果通知客户端进程。