1.nginx 模块化结构
核心模块 (进程管理, 权限控制, 错误日志, 配置解析, 事件驱动机制, 正则表达式解析)
标准 HTTP 模块 (这些模块是默认被编译到 Nginx 中的, 除非使用 without 排除)
可选 HTTP 模块 默认不编译 如需使用则 with 参数声明
邮件服务模块
第三方模块
2.Nginx 服务器的 web 请求处理机制
多进程方式 (优点在于设计和实现相对简单, 子进程相互独立, 处理客户端的请求彼此不受到干扰, 缺点是进程开销比较大) apache
多线程方式 (开销小于进程, 缺点是线程访问进程中同样的内存, 彼此之间相互影响, 不容易维护)iis
异步方式
概念 同步异步 阻塞 非阻塞
同步异步是指调用是否等待完成
阻塞非阻塞是指调用 socket 的 IO 操作是线程挂起等待完成后返回, 还是线程一直不挂起, 立即返回执行下一次调用
同步阻塞: 发送饭向接受方发送请求后, 一直等待响应, 接收方处理请求时进行 IO 操作如果不能马上得到结果, 就一直等到返回结果才响应发送方
同步非阻塞: 发送饭向接受方发送请求后, 一直等待响应, 接受对方处理 IO 操作, 如果不能马上得到结果, 立即返回, 去做其他的事情, 由于没有请求的结果, 不响应发送方, 知道 IO 完成, 才响应发送方请求然后处理下次的请求
异步阻塞: 发送方接受请求后, 不用等待响应, 去做其他工作接收方处理请求时进行的 IO 操作如果不能马上得到结果, 就一直等到放回结构后才响应发送方, 期间不能进行其他的工作
异步非阻塞: 发送方接受请求后, 不用等待响应, 去做其他工作接受方处理请求时进行 IO 操作, 如果不能马上得到结果, 也不等待, 而是去做其他的事情, 当 IO 操作完成的时候, 将完成的结果通知发送方
Nginx 服务器如何处理请求
结合多进程机制和异步非阻塞方式 Nginx 启动后, 产生一个主进程和多个工作进程工作进程用于接收和处理客户端的请求
Ngnix 服务事件处理机制
1 使用轮询的方式 每隔一段时间去看一下 IO 的状态
2使用回掉的方式操作系统在 IO 完成后主动通知工作进程 select poll epoll kqueue 为回调方式
Ngnix 事件驱动模型
poll 是对 select 的优化, epoll 是对 poll 的优化
来源: http://www.bubuko.com/infodetail-2540388.html