1.Nginx服务架构

1.模块化

  • Nginx分为五大模块

分类:核心模块、标准HTTP模块、可选HTTP模块、邮件服务模块、第三方模块

命名:一般以 ngx_ 作为前缀, _module 作为后缀,中间使用描述词

位置:所有固定模块源码放在编译目录下的src目录中,一共分为core、event、http、mail、misc、os 6个目录

  • 具体模块包含内容查询资料…

2. Web请求处理机制

多进程方式、多线程方式、异步方式

一个Web服务器 ——> 处理多个客户端

1. 多进程方式
  • 说明:服务器主进程生成子进程来处理接收到的客户端,直到断开连接后结束子进程。
  • 优点:各个进程独立运作,互不干扰,当进程结束时回收空间不留下任何垃圾。
  • 缺点:在客户端数量多时,系统压力大,导致性能下降,并且每次进程结束都进行回收,效率低下。
2.多线程方式
  • 说明:主进程派出线程对接客户端。
  • 优点:相比多进程方式开销更小,对系统的资源要求度降低
  • 缺点:多个线程位于同一个进程内,访问同样的内存空间,彼此相互影响,增加了出错的风险。
3.异步方式
  • 说明: Nginx的异步方式是异步非阻塞方式(相当于开个线程去发消息,发完后该线程在等结果时可以做别的事)

  • 事件处理机制

0.  隔时间查看是否有事件

0.  事件主动通知工作进程

> 采用 select/poll/epoll/kqueue 等系统调用实现 【事件驱动型模式

3. Nginx服务器的进程

1.主进程(Master Process)
  • 主要功能:与外界通信,对内部其他进程进行管理

> 读取Nginx配置文件并验证其有效性、正确性;
    >
    > 建立、绑定、关闭Socket
    >
    > 按配置生成、管理、结束工作进程
    >
    > 接收外界指令:重启、升级、退出服务器等
    >
    > 不中断服务,实现平滑重启,应用新配置
    >
    > 不中断服务,实现平滑升级,升级失败进行回滚处理
    >
    > 开启日志文件,获取文件描述符
    >
    > 编译和处理Perl脚本

2.工作进程(Worker Process)
  • 主要功能:由主进程生成,正常情况下生存于主进程整个生命周期,保证Nginx服务器对外提供稳定的Web服务

> 接收客户请求
    >
    > 将请求依次送入各个功能模块进行过滤处理
    >
    > IO调用,获取响应数据
    >
    > 与后端通信,接收后端处理结果
    >
    > 数据缓存,访问缓存索引、查询和调用缓存数据
    >
    > 发送请求结果,响应客户请求
    >
    > 接收主程序指令:重启、升级、退出等
    >
    > …

3.缓存索引重建及管理进程
  • 主要功能

0.  缓存索引重建进程:在Nginx启动一段时间后由主进程生成,在缓存元数据重建完后自动退出,其主要工作是根据磁盘上缓存文件在内存中建立索引元数据库。
    0.  缓存索引管理进程:一般存在于主进程整个生命周期,负责对缓存索引进行管理,其主要功能是更新索引元数据库。