概述
nginx模型解析
- 一.访问nginx默认首页过程解析
- 1.访问nginx默认首页流程图
- 2.映射配置流程
- 二.nginx的进程模型
- 1. master进程与worker进程
- 1.1 master进程
- 1.2 worker进程
- nginx模型图
- 2. master与worker协作流程
- 2.1 ./nginx -s reload
- 2.2 worker怎么处理请求
- 2.3 nginx多进程模型好处
在nginx安装与运行中成功运行nginx并访问到了nginx的默认页面,在此篇文章中就来说一下访问nginx默认页面的过程,以及对nginx模型的解析。
一.访问nginx默认首页过程解析
1.访问nginx默认首页流程图
步骤:
1 在浏览器页面输出192.168.142.147(默认访问80端口)
2 nginx监听端口,根据配置映射到访问的页面,再将数据返回
2.映射配置流程
配置映射在nginx的nginx.cof文件中,如下所示
server {
listen 80;
server_name localhost;
location / { //1.访问的url符合“/”
root html; //2.就会找到相对路径html
index index.html index.htm; //3.在html中找到index.html或index.htm返回到浏览器
}
二.nginx的进程模型
输入命令,查看nginx进程
可以发现,nginx启动后,以daemon多进程⽅式在后台运行,包括⼀个Master进程和多个Worker进程,Master进程是领导,是老大,Worker进程是干活的小弟。
1. master进程与worker进程
1.1 master进程
主要是管理worker进程,比如:
- 接收外界信号向各worker进程发送信号(./nginx -s reload)
- 监控worker进程的运⾏状态,当worker进程异常退出后Master进程会自动重新启动新的worker进程等
1.2 worker进程
- worker进程具体处理网络请求。
- 多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。(可以防止恶意攻击)
- ⼀个请求,只可能在⼀个worker进程中处理,⼀个worker进程,不可能处理其它进程的请求。
- worker进程的个数是可以设置的,⼀般设置与机器cpu核数⼀致。
nginx模型图
2. master与worker协作流程
2.1 ./nginx -s reload
当运行的nginx调用 ./nginx -s reload命令时,master与worker是如何工作呢?
- master文件对配置文件进行语法检查
- 尝试实施新配置(比如修改了监听端口,会尝试分配新的监听端口)
- 尝试配置成功后master会建立新的worker
- 新建成功后master对旧的worker发送关闭消息
- 旧的worker进程收到信号会继续服务,直到把当前进程接收到的请求处理完毕后关闭
2.2 worker怎么处理请求
假设我们监听8009端口,当一个请求来临时每个worker又有可能处理这个请求,并且此请求不会再被其他worker处理。
- master进程创建之后,会建⽴好需要监听的的socket,然后从master进程再fork出多个worker进程。此时,所有worker进程的监听描述符listenfd在新连接到来时都变得可读。
- nginx使⽤互斥锁来保证只有⼀个workder进程能够处理请求,拿到互斥锁的那个进程注册listenfd读事件,在读事件⾥调⽤accept接受该连接,然后解析、处理、返回客户端。
注意:nginx默认是使用epoll模式,在epoll模式下,每个worker都是异步非阻塞的,当一个请求在某个worker发生了阻塞,worker可以转过头去处理下一个请求。
2.3 nginx多进程模型好处
- 每个worker进程都是独⽴的,不需要加锁,节省开销
- 每个worker进程都是独⽴的,互不影响,⼀个异常结束,其他的照样能提供服务
- 多进程模型为reload热部署机制提供了⽀撑
最后
以上就是高高眼神为你收集整理的nginx模型解析一.访问nginx默认首页过程解析二.nginx的进程模型的全部内容,希望文章能够帮你解决nginx模型解析一.访问nginx默认首页过程解析二.nginx的进程模型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复