新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 站长技术 > 服务器

Nginx为什么高效?一文搞明白Nginx核心原理

时间:2019-09-06 18:01:21  来源:  作者:

Nginx 的进程模型

Nginx为什么高效?一文搞明白Nginx核心原理

 

Nginx 服务器,正常运行过程中:

  1. 多进程:一个 Master 进程、多个 Worker 进程
  2. Master 进程:管理 Worker 进程
  3. 对外接口:接收外部的操作(信号)
  4. 对内转发:根据外部的操作的不同,通过信号管理 Worker
  5. 监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
  6. Worker 进程:所有 Worker 进程都是平等的
  7. 实际处理:网络请求,由 Worker 进程处理;
  8. Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。

思考:

  1. 请求是连接到 Nginx,Master 进程负责处理和转发?
  2. 如何选定哪个 Worker 进程处理请求?请求的处理结果,是否还要经过 Master 进程?
Nginx为什么高效?一文搞明白Nginx核心原理

 

HTTP 连接建立和请求处理过程:

  1. Nginx 启动时,Master 进程,加载配置文件
  2. Master 进程,初始化监听的 socket
  3. Master 进程,fork 出多个 Worker 进程
  4. Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求

Nginx 高性能、高并发:

  1. Nginx 采用:多进程 + 异步非阻塞方式(IO 多路复用 epoll)
  2. 请求的完整过程:
  3. 建立连接
  4. 读取请求:解析请求
  5. 处理请求
  6. 响应请求
  7. 请求的完整过程,对应到底层,就是:读写 socket 事件

Nginx 的事件处理模型

request:Nginx 中 http 请求。

基本的 HTTP Web Server 工作模式:

  1. 接收请求:逐行读取请求行和请求头,判断段有请求体后,读取请求体
  2. 处理请求
  3. 返回响应:根据处理结果,生成相应的 HTTP 请求(响应行、响应头、响应体)

Nginx 也是这个套路,整体流程一致。

Nginx为什么高效?一文搞明白Nginx核心原理

 

模块化体系结构

Nginx为什么高效?一文搞明白Nginx核心原理

 

nginx的模块根据其功能基本上可以分为以下几种类型:

  • event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
  • phase handler: 此类型的模块也被直接称为handler模块。主要负责处理客户端请求并产生待响应内容,比如ngx_http_static_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
  • output filter: 也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。
  • upstream: upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
  • load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。

转自http://ningg.top/nginx-series-principle/



Tags:Nginx   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
引言nginx 安装安装依赖 下载 编译安装编译时将 ssl 模块静态编译 nginx 服务架构模块化结构模块化开发 nginx 的模块化结构 nginx 的模块清单 nginx 的 web 请求处理机制...【详细内容】
2019-09-20   Nginx  点击:(3)  评论:(0)  加入收藏
最近遇到了nginx疯狂抛错,access.log一天一共5W多条,但error.log中有大概9K多条,基本都是111: Connection refused,这到底是为什么呢?从日志看起我们还是先来看日志。我提取了一...【详细内容】
2019-09-19   Nginx  点击:(6)  评论:(0)  加入收藏
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少(一个worker进程只占用10-12M内存),启动极快,高并发能力强,在互联网项目中广泛应用。...【详细内容】
2019-09-17   Nginx  点击:(8)  评论:(0)  加入收藏
过滤模块的分析相关结构体ngx_chain_t 结构非常简单,是一个单向链表: typedef struct ngx_chain_s ngx_chain_t; struct ngx_chain_s { ngx_buf_t *buf; ngx_chain_t *next;...【详细内容】
2019-09-16   Nginx  点击:(5)  评论:(0)  加入收藏
一、安装在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。也可以通过直接下载安装包的方法,**以下命令均需root权限执行**:首先安装必要的库(nginx 中gzip...【详细内容】
2019-09-16   Nginx  点击:(7)  评论:(0)  加入收藏
当前大多数的互联网系统都使用了服务器集群技术,集群是将相同服务部署在多台服务器上构成一个集群整体对外提供服务。 图片来自 Unsplash这些集群可以是 Web 应用服务器集...【详细内容】
2019-09-11   Nginx  点击:(8)  评论:(0)  加入收藏
分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞、资源耗尽从而不能为正常用户提供正常服务的攻击手段。随着互联网带宽...【详细内容】
2019-09-11   Nginx  点击:(7)  评论:(0)  加入收藏
Nginx 的进程模型 Nginx 服务器,正常运行过程中: 多进程:一个 Master 进程、多个 Worker 进程 Master 进程:管理 Worker 进程 对外接口:接收外部的操作(信号) 对内转发:根据外部的操...【详细内容】
2019-09-06   Nginx  点击:(17)  评论:(0)  加入收藏
前段时间公司有个应用做什么营销活动,不知道咋回事,一个平常之后1-2万人在线的应用,突然来了10多万人,然后呢,系统就异常的慢,异常的慢,持续了很长时间,被客户投诉的很惨。就说负责...【详细内容】
2019-09-06   Nginx  点击:(13)  评论:(0)  加入收藏
一、真假难辨如何禁止访问,我们先了解下常见的3种网站访问模式:用户直接访问对外服务的普通网站浏览器 --> DNS解析 --> WEB数据处理 --> 数据吐到浏览器渲染展示用户访问使...【详细内容】
2019-09-06   Nginx  点击:(21)  评论:(0)  加入收藏
1.为什么nginx里面有的是浏览器渲染出的页面,有的时候就变成下载文件?这个一个取决于服务端nginx,一个取决于你浏览器。在Nginx服务端的配置文件目录下,有一个mime.types文件,内...【详细内容】
2019-09-05   Nginx  点击:(17)  评论:(0)  加入收藏
概述当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is present on the requested resource,需要给Nginx服务器配置响应的header参数,下面一起来...【详细内容】
2019-09-02   Nginx  点击:(15)  评论:(0)  加入收藏
客户反映:说自己的网站走nginx代理后,打开空白。直接IP加地址访问是好的(http://ip:port)故障排查:1、打开chrome浏览器,访问了下,访问情况真是客户描述的那样。2、感觉打开chrom...【详细内容】
2019-08-28   Nginx  点击:(21)  评论:(0)  加入收藏
Redis的相关知识,我们已经讲得差不多了,后面我们会开新的系列内容,来谈一谈Nginx。Nginx相信大家并不陌生,作为一款世界上最流行的HTTP与反向代理服务,在互联网领域被广泛的应...【详细内容】
2019-08-28   Nginx  点击:(22)  评论:(0)  加入收藏
1. 前言本文主要讲解CentOS7如何安装PHP7最新版。CentOS 7附带PHP版本5.4,已经正式EOL(EOL是End-of-life项目终止/停产的缩写)很长一段时间,不再受支持。通过使用PHP 7,您的应...【详细内容】
2019-08-27   Nginx  点击:(36)  评论:(0)  加入收藏
根目录和索引文件root 指令指定将用于搜索文件的根目录。 为了获取所请求文件的路径,NGINX 将请求 URI 附加到 root 指令指定的路径。该指令可以放在 http {},server {} 或 l...【详细内容】
2019-08-26   Nginx  点击:(26)  评论:(0)  加入收藏
一、虚拟机准备:[root@localhost 桌面]# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0TYPE=EthernetONBOOT=yesBOOTPROTO=staticIPADDR=192.168.59.1 #注意虚拟...【详细内容】
2019-08-26   Nginx  点击:(23)  评论:(0)  加入收藏
强缓存与协商缓存的区别强缓存:浏览器不与服务端协商直接取浏览器缓存协商缓存:浏览器会先向服务器确认资源的有效性后才决定是从缓存中取资源还是重新获取资源协商缓存运作...【详细内容】
2019-08-26   Nginx  点击:(18)  评论:(0)  加入收藏
Nginx怎么做域名解析?怎么在你自己开发的模块里面使用Nginx提供的方法解析域名?它内部实现是什么样的?本文以Nginx 1.5.1为例,从nginx_mail_smtp模块如何进行域名解析出发,分析Ng...【详细内容】
2019-08-26   Nginx  点击:(20)  评论:(0)  加入收藏
一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel二、首先要安装 PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。1、下...【详细内容】
2019-08-22   Nginx  点击:(23)  评论:(0)  加入收藏
推荐资讯
相关文章
栏目更新
栏目热门