Nginx1-Nginx的基本介绍

18 篇文章 0 订阅

1.什么是Nginx?

  • Nginx是一款轻量级的开源web解决方案,支持高并发,非阻塞,异步处理,文件压缩,反向代理等功能,从而降低系统资源,网络带宽的消耗,从而达到让网站高效运行的目的,并且还有丰富的第三方模块支持,支持众多的第三方软件(redis,memcached)能基本满足我们的建站需求。
  • Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自由的许可证使得扩展Nginx功能的第三方模块层出不穷,而且优秀的设计带来了极佳的稳定性,因此其作为Web服务器被广泛应用到大流量的网站上,包括腾讯、新浪、网易、淘宝等访问量巨大的网站。

2.Nginx的产生

  • Nginx是由俄罗斯程序设计师logr sysover所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。并且遵循BSD-like(开源协议,不了解的可以去看下自由基金会的相关资料)于2005.10.4发行1.0版本,因为其内存占用少,并发能力强等显著优势,使其在同类web解决方案中遥遥领先。
  • Nginx官网:http://nginx.org/ #相应的Nginx软件版本,Nginx文档都在这里(纯英语的)

3.什么是Tengine?

  • Tengine是淘宝网发起的web解决方案,Tengine以Nginx为基础,并且在遵循GPL协议上进行二次开发,新增了很多高级功能及特性,目的是为了能更好的解决网站大量并发的问题,Tengine的稳定性及卓越的功能在天猫,淘宝商城已经有了很卓越的体现,感兴趣的可以去瞧一瞧。
  • Tengine官网:http://tengine.taobao.org/ #支持中文的

4.Nginx特性

  • 轻量级web服务器:因为Nginx的特点,在处理高并发及静态文件比Apache更高效,资源消耗更低,在不追求非常稳定的情况下,Nginx是更好的选择,当然也不是说Nginx比Apache更好,各有各的优势,看需求,追求稳定,动态文件处理就用Apache,追求高并发处理,降低成本,选择Nginx(稳定这个概念也是相对的),同时也可以两者结合起来使用。
  • 负载均衡:首先理解什么是负载均衡?负载均衡简单来说就是把用户请求通过既定的转发策略发送到不同的应用服务器上面,从而全面提升服务器抗压能力,解决延迟,单点故障的问题。然而Nginx可以良好的支持多种应用服务及HTTP代理等特性,可以更好的从软件层面实现负载均衡(也有硬件的)。
    配置简单,说下Nginx本身特性了,Nginx是使用C语言编写(C语言百度介绍一大把),与操作系统的契合度更高,能更好的调用系统资源,并且Nginx安装简单,配置文件编辑也非常轻松,及其容易上手,同时还有很多功能模块为你提供,一句话缺啥装啥,实在没有的,就让公司开发把。。。。

5.Nginx的优点

  • 高并发,高性能:在Linux下基本是使用epoll,让Nginx处理请求速度更快,同时也支持高并发,在峰值不会当系统轻易宕机。
  • 可扩展性:Nginx是采用模块化设计,由各种不同的功能,不同层次,不同类型的模块组成,并且模块之间,相互依赖低,不会因为单个模块问题会对整体造成影响,易于升级与更新。
  • 高可靠性:选择web服务器我们首先注重的就是稳定性,然后才是是其他,Nginx在这方面也做的非常出色。Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。
  • 热部署:支持Nginx平滑升级
  • BSD许可证:由于Nginx是开源免费的,当有定制需求时,可以自行修改源码,运行在你的商业环境中,不用担心权限的问题。

6.Nginx结构

Nginx的组成

  • Nginx二进制可执行文件:是由Nginx框架,核心模块及第三模块共同编译完成的一个可执行文件,所有的功能都由它提供。
  • Nginx.conf:Nginx的核心配置文件,主要用于定义Nginx的行为,通过Nginx.conf可以操作Nginx的动作。
  • access.log:访问日志,主要存储Nginx的各种http请求,用于运营及运维分析,非常重要。
  • error.log:错误日志,主要存储Nginx的各种错误,通过此日志可以分析及定位Nginx所产生的问题。

7.Nginx工作流程

  • Nginx默认是采用多进程工作方式,也就是Nginx启动后,至少会运行一个master主进程及多个worker进程(也就是子进程),当客户端发起请求时候,worker进程负责响应客户端请求,并且通过查找配置文件将此次请求映射到location block,然后localtion根据规则将请求匹配对应的模块进行处理,产生客户端需要的输出,然后在生成响应,由worker子进程发给客户端,断开请求连接。

常见名词

  • 多进程:多进程就是常见的master/worker进程模式(一个master主进程及多个子进程)。
    master进程主要负责worker进程管理,配置文件管理,接受外来命令输入(restart,reload)等功能,不直接参与用户的交互,同时每个master进程都单独使用一个运算单元,从而降低cpu的上下文切换。
    worker进程主要是负责处理用户请求,并且与master拥有相同的资源调配权限,同时多个worker进程之间又是相互对等的,共同竞争来自客户端的请求,但是只有一个进程来处理,并且进程之间又相互独立,不会因为一个进程的退出,导致其他进程工作中断,也是实现高并发的主要原因之一。

  • 异步非阻塞:首先看下完整的请求过程:
    客户端发起请求,worker进程接受请求并且建立连接,接受数据,发送数据。
    在这个请求过程中,Nginx产生的worker进程,会将用户请求交给location block进行处理,然后自己接着处理下一个用户请求,不会傻傻的等待整个请求彻底完成,然后在去处理下一个请求,能造成异步非阻塞阻塞的的原因基本就是磁盘I/O了,有了异步非阻塞机制,能让Nginx在处理大量客户请求时候,表现的非常好的原因,还有比较深层次的东西等我技术水平提升在来解答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值