nginx的配置文件详细说明及其运行原理

nginx的配置文件nginx.config的详细说明,大体上我们可以将其分为三部分:

第一部分,全局块:

  打开配置文件,从配置文件从开始到events 块之间的内容,就是一些会影响整个nginx服务器运行的指令,包括用户(组),日志存放路径等等,但是如图所示:


全局块.png

初始化的nginx配置文件全局块大多数是注释起来的,只有一个配置生效,"worker_processes 1;"这个配置是整个nginx比较重要的参数,它表示nginx可以处理的并发数,数字越大可处理的并发处理量也就越多,但是会受到硬件和软件的条件约束。

第二部分,events块:

如图:
events块.png

  这部分的配置关系到nginx服务器与网络用户的连接,常用的设置包括是否开启对多work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个wordprocess可以同时支持的最大连接数等。
  这儿的最大连接数一般与cup数量有关,可以灵活配置,上图就表示最大连接数为1024.

第三部分,Http块:

  除了events之外的被http括起来的部分,这部分是nginx中配置最频繁的部分,代理,缓存,日志等绝大多数功能和第三方模块都放在这里。值得注意的是http又分为http全局块、server块。

http全局块:
  http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
httpserver块:
  这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。
而每个server块也分为全局server 块,以及可以同时包含多个locaton块。
1、全局server块
  最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
2、location 块
  一个server 块可以配置多个location 块。这块的主要作用是基Nginx服务器接收到的请求字符串(例如server_ _name/uri-string) , 对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string )进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

nginx的原理

说完了概念我们再来看看nginx的运行原理,我们查看nginx的进程可以发现,nginx有两个不同的进程运行,一个是master,另一个是worker如图:
nginx进程.png

master就像是管理员,请求过来后由master进程分配给worker进程,一个master可以有多个worker进程,就想公司的领导和员工一样,接受请求的是master但是真正干活的确实worker,两者关系如图:


关系图.png

有图可以看出每一个worker由多个client连接,那他们到底是怎么工作的呢,我们在看一张图:
关系图2.png

不难看出每一个客户端client发送的请求由master接受后会由每一个worker以争抢的方式去处理,每一个worker之间都是互相独立的,谁竞争到就由谁来处理。而这种机制也带来了一定的好处:
1.因为每一个进程都是独立的,所以这种模式可以有利于热部署,不用停止nginx服务就可以跟新配置。而正在处理请求的worker也会在处理结束后自动加载新配置,不会停止服务。
2.因为每个worker都互相独立,所以有一个worker出现问题,其他的worker 也会继续争抢,实现请求过程,不会造成服务中断。
一般worker的数量与cpu数量一致,这样就可以将系统的性能提升到最大。

这里有两个思考:
1.发送请求,占用了woker的几个连接数?
   2 或者 4 个,如果请求的是静态请求,不需要连接tomcat那就是两个,如果是动态请求那就是四个。

  1. nginx有一个master,有四个woker,每个woker支持最大的连接数1024,支持的最大并发数是多少?
    ●普通的静态访 问最大并发数是:1024* 4/2=2048;
    ●而如果是HTTP 作为反向代理来说,最大并发数量应该是1024 *4/4=1024;
    这里是按照实际的worker数量计算。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • I/O模型: 阻塞型、非阻塞型、复用型、信号驱动型、异步 同步/异步:关注消息通知机制 消息通知:同步:等待对方返...
    Net夜风阅读 6,096评论 0 1
  • 最近感觉很多东西在运用到一定的程度之后,会发现原来是自己了解到的不够。一方面限于实际运用到的不多,一方面可能是因为...
    java成功之路阅读 3,150评论 0 1
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 6,298评论 0 9
  • 刚刚本在看词 ——— 踏莎行 秦观 雾失楼台,月迷津渡,桃源望断无寻处。可堪孤馆闭春寒,杜鹃声里斜阳暮。驿寄梅花...
    Leonor_Z阅读 3,666评论 5 2
  • 有时我期待冰箱里有一只来自南极的企鹅, 虽然她会突然消失,就像她刚出现的那样。 但她会让我的生活回到了正轨, 让我...
    不二文舟舟阅读 1,586评论 0 0