Nginx进程模型Nginx服务器,正常运行时:多进程:一个Master进程,多个Worker进程Master进程:管理Worker进程对外接口:内部接收外部操作(信号)转发:根据不同的外部操作,通过信号监控管理Worker:监控worker进程的运行状态。worker进程异常终止后,会自动重启worker进程。工作进程:所有工作进程都是平等的。工艺加工;NumberofWorkerprocesses:配置在nginx.conf中,一般设置为核心数,以充分利用CPU资源。同时避免进程数量过多,避免进程争抢CPU资源,增加上下文切换的损失。思考:请求连接到Nginx,Master进程负责处理转发?如何选择哪个工作进程来处理请求?请求的处理结果是否还要经过Master进程?HTTP连接建立及请求处理过程:Nginx启动时,Master进程加载配置文件Master进程,初始化监听socketMaster进程,fork出多个Worker进程,竞争新的连接。获胜方通过三次握手建立Socket连接,进程请求Nginx高性能、高并发:Nginx采用:多进程+异步非阻塞模式(IO多路复用epoll)请求的完整过程:建立一个connectionReadrequest:parserequestprocessingrequestresponserequestrequest的完整过程,对应底层是:读写socket事件Nginx事件处理模型request:Nginx中的http请求。基本HTTPWebServer工作模式:接收请求:逐行读取请求行和请求头,判断该段有请求体后,读取请求体处理请求,返回响应:根据处理结果,生成相应的HTTP请求(响应行、响应头、响应体)Nginx也是同样的套路,整体流程是一样的。模块化架构Nginx模块按功能基本可以分为以下几种类型:事件模块:构建一个独立于操作系统的事件处理机制框架,提供对特定事件的处理。包括ngx_events_module、ngx_event_core_module和ngx_epoll_module等。nginx使用哪个事件处理模块取决于具体的操作系统和编译选项。phasehandler:这类模块也直接称为handler模??块。主要负责处理客户端请求并生成响应内容,如ngx_http_static_module模块,负责处理客户端的静态页面请求,并准备相应的磁盘文件用于响应内容输出。outputfilter:也称为filter模块,主要负责对输出内容进行处理,可以对输出进行修改。例如,可以实现为所有输出的html页面添加预定义的footbar,或者替换输出图片的URL等工作。upstream:upstream模块实现反向代理的功能,将真正的请求转发给后端服务器,从后端服务器读取响应,返回给客户端。upstream模块是一个特殊的handler,只是响应内容并不是自己实际生成的,而是从后端服务器读取的。load-balancer:负载均衡模块,实现了特定的算法。在众多后端服务器中,选择一台服务器作为某个请求的转发服务器。版权声明:文章来自原文:http://ningg.top/nginx-series...,版权归原作者所有。除非无法确认,否则我们会注明作者和出处。如有侵权请告知,我们将立即删除并致歉,谢谢。
