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的优化。