新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  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配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的server{listen 80;listen 443 ssl;ssl on;server_name 域名;index index.html index.htm index....【详细内容】
2019-12-27   Nginx  点击:(2)  评论:(0)  加入收藏
背景在日常运维工作中,常常会用到反向代理,为了更安全同时为了负载均衡,分担压力。那么,有小伙伴就会有疑问: 什么是反向代理? 负载均衡又是怎么实现的? 有反向代理那有正向代理吗? ...【详细内容】
2019-12-27   Nginx  点击:(0)  评论:(0)  加入收藏
第一步:安装vsftpd提供ftp服务  https://www.cnblogs.com/lyq159/p/12070791.html第二步:安装Nginx提供http服务  1.安装准备:安装Nginx环境    a)gcc      安装...【详细内容】
2019-12-26   Nginx  点击:(1)  评论:(0)  加入收藏
Nginx动静分离介绍Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术针对PHP的动静分离静态页面交给Nginx处理动态页面交给PHP-FPM模块或Apache处...【详细内容】
2019-12-26   Nginx  点击:(1)  评论:(0)  加入收藏
一、背景为了避免别人把未备案的域名解析到自己的服务器ip而导致服务器被断网,需要在nginx上设置禁止通过ip访问服务器,只能通过域名访问。 二、解决方法如果网站只配置了...【详细内容】
2019-12-26   Nginx  点击:(6)  评论:(0)  加入收藏
一、Linux介绍:Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并...【详细内容】
2019-12-25   Nginx  点击:(3)  评论:(0)  加入收藏
安装ffmpeg安装过程略安装完成后,检查是否安装成功。比如我这里采用向pili推流的方式,将本地的一个mp4视频推流到七牛pili。ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy...【详细内容】
2019-12-25   Nginx  点击:(4)  评论:(0)  加入收藏
下载openrestywget https://openresty.org/download/openresty-1.15.8.1.tar.gztar zxvf openresty-1.15.8.1.tar.gzcd openresty-1.15.8.1 安装openresty查看当前nginx的编...【详细内容】
2019-12-24   Nginx  点击:(4)  评论:(0)  加入收藏
写在前面作为一名前端,这几年没怎么碰过后台的东西,只能干等着后台小哥去排查问题,确实有点不该。如果要聊 Nginx,现阶段有点力不从心,内容还是挺多的,不够平时用的内容倒不是很复...【详细内容】
2019-12-20   Nginx  点击:(3)  评论:(0)  加入收藏
由于 nginx 的优秀性能表现,所以很多企业在 Kubernetes 中选择 Ingress Controller 的时候依然会选择基于 nginx 的 ingress-nginx,前面文章中我们更多的是介绍更加云原生配置...【详细内容】
2019-12-19   Nginx  点击:(12)  评论:(0)  加入收藏
今天这篇文章主要来介绍下 Nginx 的 reload 流程。实际上在之前文章中,在更改了 nginx 配置文件时,我们都会执行 nginx -s reload 命令,我们执行这条命令的原因是希望 nginx 不...【详细内容】
2019-12-19   Nginx  点击:(3)  评论:(0)  加入收藏
LinuxDeploy搭建linux服务器篇,在写到安装宝塔面板时写不下去了,虽然宝塔面板成功安装,但实际运行中一堆BUG,暂时处于卡壳状态,所以还在不断排雷中...... 所以,本来想先写内网穿透...【详细内容】
2019-12-11   Nginx  点击:(15)  评论:(0)  加入收藏
一、关于Nginx的负载均衡在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的另一...【详细内容】
2019-09-11   Nginx  点击:(1)  评论:(0)  加入收藏
正向代理Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访...【详细内容】
2019-12-09   Nginx  点击:(10)  评论:(0)  加入收藏
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少(一个worker进程只占用10-12M内存),启动极快,高并发能力强,在互联网项目中广泛应用。什么是反向代理?反向代理(Re...【详细内容】
2019-12-09   Nginx  点击:(15)  评论:(0)  加入收藏
为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器...【详细内容】
2019-12-09   Nginx  点击:(18)  评论:(0)  加入收藏
WordPress的伪静态规则是根据服务器环境来设置的,不同的PHP环境有不同的伪静态设置方法,常见的PHP环境有 Apache和Nginx ,以下浩子分别就这两种环境做伪静态设置。值得一提的...【详细内容】
2019-12-06   Nginx  点击:(19)  评论:(0)  加入收藏
正确配置Nginx+PHP是我们在Nginx下搭建Php环境必须好好掌握的方法,网上的文件太多太杂,大多都是复制粘贴的,很多错误,经过511遇见多次测试,和网上学习,给以一个较为正确的代码,希望...【详细内容】
2019-12-05   Nginx  点击:(12)  评论:(0)  加入收藏
一、前言1、使用google开发的google-perftools优化nginx的内存分配效率和速度,帮助在高并发的情况下控制内存的使用。2、TCMalloc在内存的分配上效率和速度要比malloc高得多...【详细内容】
2019-12-03   Nginx  点击:(11)  评论:(0)  加入收藏
一、ngx_http_referer_module(阻挡来源非法的域名请求),配置如下:location ~.*\. (gif|jpg|png|flv|swf|rar|zip)${ valid_referers none blocked test.com *.test.com; if($v...【详细内容】
2019-11-29   Nginx  点击:(14)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条