ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx基础·

2022-08-12 10:34:10  阅读:194  来源: 互联网

标签:HTTP 基础 Worker Nginx Master 模块 进程


Nginx基础知识

简介

Nginx 的是一种轻量级高性能的 HTTP 和反向代理服务器,因为它的稳定性,丰富的模块 库,灵活的配置和低系统资源的消耗而闻名。

(1)作为服务器

​ 相比的 Apache,Nginx 的使用更少的资源,支持更多的并发链接,能够支持高达 500,00 个 并发链接数的响应。

(2)作为负载均衡服务器

​ 它既可以在内部直接支持的 Rails 和 PHP,也可支持作为 HTTP 代理服务器对外进行服务。 Nginx 用 C 编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

(3)作为邮件代理服务器

​ 最早开发这个产品的目的之一就是为了作为邮件代理服务器,其占有内存少,并发能力 强使 得作为邮件代理服务器有非常优秀的表现。

Nginx的架构

1. 模块

Nginx 的从结构上分为核心模块、基础模块和第三方模块。

① 核心模块:HTTP 模块、EVENT 模块、MAIL 模块。

② 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP 代理模块、HTTP 重写模块。

③ 第三方模块:HTTP 上游哈希模块和 HTTP 访问密钥模块。

Nginx 的启动后台包含 2 类进程:

① 一个主进程:管理工作者进程,包含接收外界信号,向 Worker 进程发送信号,监控 Worker 进程运行状态,当任意一个 Worker 进程出现错误从而导致 Coredump 时,Master 进程 会立刻启动新的 Worker 进程继续提供服务。

② 多个 Worker 进程:基本的网络事件在 Worker 进程中执行,Worker 进程是相互独立的,
一个请求只能在一个 Worker 进程中执行,Worker 进程数是可设置的(一般设置与 CPU 核数相等,原因与 Nginx 的的进程模型以及事件模型相关)。

2.进程模型

(1)操作 Nginx

​ 当操作 Nginx 时,只需要与主进程通讯即可,Master 进程会接收外界的信息,根据信息 进行不同的操作。比如重新加载配置:Master 接受到 kill -HUP pid 信号后,先重新加载配置, 开启新的 Worker 进程接收新的请求。而旧的 Worker 进程接收 Master 信息,不再接收新的请 求,继续处理完当前进程未处理完的请求。

(2)Worker 进程处理请求

​ 首先每个 Worker 进程都是 Master 进程中 Fork 而来的。在 Master 进程中先建立好要监听 的插座(listenfd)。这句话的意思是 Master 进程会监听来自客户端的请求,然后再 Fork 多个 Worker 进程,所有的 Worker 进程的 listenfd 在新的请求进来都变得可读,为保证只有一个 Worker 进程处理请求,所有的 Worker 进程在注册 listenfd 读事件前抢夺 Accept_mutex,抢到 Accept_mutex 的那个进程注册 listenfd 读事件,然后在读事件里调用 Accept 接受,接着开始读 取请求、解析请求、处理请求返回数据给客户端,最后断开连接。

(3)Nginx 的处理事件

​ Nginx 采用异步非阻塞的方式处理请求,具体来说,系统调用就像 Select、Poll、Epoll、 Kqueue 这样的系统调用,它们提供一种机制,让用户可以同时监控多个事件。虽然调用它们 是阻塞的,但可以设置超时时间,在超时时间内,如果有事件准备好就返回

标签:HTTP,基础,Worker,Nginx,Master,模块,进程
来源: https://www.cnblogs.com/dagu666/p/16578848.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有