nginx模块化设计

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)。工作进程用于接收和处理客户端请求。
异步非阻塞:
客户端发送请求之后,无须等等服务器端响应可以进行其它操作,服务器端如果无法立即返回结果也进行其它的工作,返回结果通知客户端进程。