nginx简介(一)

背景:

        前面说了准备围绕运维工程师所要学习的知识进行记录和分享,linux基础的记录是一个漫长的过程,后面会时不时的记录下。今天准备拉一个分支,介绍一下nginx的相关内容,由于nginx的内容太过丰富,那我们就从一篇简单的介绍开始把....

 一.  nginx介绍

         Nginx是一款轻量级的Web 服务器/反向代理服务器/正向代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。

二.  nginx的基础架构

         nginx运行时,在lLinux系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker进程。Nginx以多进程形式工作,也支持多线程方式,但nginx默认采用多进程方式,也是主流方式。

cc383d990d0342889e11ab433ff9bc1c.png

 1.1   nginx多进程模式:

 多进程模式,会有一个master进程和多个worker进程。

Master进程管理worker进程,包括

(1)接收来自外界的信号;

(2)向各worker进程发送信号;

(3)监控work进程状态;

(4)当worker退出后(异常情况下),自动重新启动新worker进程。

(5)读取nginx的配置文件,判断配置文件的语法等等功能。

多个worker进程之间对等,竞争来自客户端的请求,一个请求,只会在一个worker中处理,一个worker进程不会处理其他进程的请求。

Worker进程个数的设置,一般设置与机器cpu核数一致。(可以在nginx.conf的配置文件中进行设置worker_ processes 1)

work的进程的功能:

(1)接收master进程下发的指令,执行任务。

1.2  nginx进程模式的好处:

(1)每个worker进程相互独立,无需加锁,节省锁开销;

(2)采用独立的进程,不会相互影响,一个进程退出,其他进程服务不会中断;

(3)Worker异常退出,会导致当前worker上的所有请求失败,不过不会影响所有请求,降低了风险。

 (4)多进程模式对并发的支持,每个worker只有一个主线程,采用异步非阻塞方式来处理请求,使得nginx可以同时处理成千上万个请求。相比Apache,每个请求会独占一个工作线程,并发上千时,就同时有几千的线程在处理请求,线程带来的内存占用很大,线程的上下午切换带来的cpu开销也大,性能就上不去了。

1.3. 异步非阻塞:

(1)异步的概念和同步相对的,也就是不同事件之间不是同时发生的。

(2)非阻塞的概念是和阻塞对应的,阻塞是事件按顺序执行,每一事件都要等待上一事件的完成,而非阻塞是如果事件没有准备好,这个事件可以直接返回,过一段时间再进行处理询问,这期间可以做其他事情。但是,多次询问也会带来额外的开销。

三.    nginx的优缺点

1.  优点:

 1.高并发量:根据官方给出的数据,能够支持高达 50,000 个并发连接数的响应。

 2.内存消耗少:处理静态文件,同样起web 服务,比apache 占用更少的内存及资源,所有它是轻量级的。

 3.简单稳定:配置简单,基本在一个conf文件中配置,性能比较稳定,可以7*24小时长时间不间断运行。

4.模块化程度高:Nginx是高度模块化的设计,编写模块相对简单,包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter,支持 SSL 和 TLSSNI。

5.支持Rwrite重写规则:能够根据域名、URL的不同, 将HTTP请求分发到不同的后端服务器群组。

6.低成本:Nginx可以做高并发的负载均衡,且Nginx是开源免费的,如果使用F5等硬件来做负载均衡,硬件成本比较高。 

7.支持多系统:Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows,由于Nginx是免费开源的,可以在各系统上编译并使用。

2.  缺点:

1.动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。

2.rewrite弱:虽然nginx支持rewrite功能,但是相比于Apache来说,Apache比nginx 的rewrite 强大。

四.  nginx的常用功能

 1.  正向代理:

         代理对象为客户端做代理,客户端无法直接访问服务端,需要通过配置代理对象才可以访问;而服务端只需要与代理对象打交道,不需要感知客户端的存在。 

 

 2.   反向代理:

     代理对象为服务端,反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

f1f4def4b3b24a6fb24345792adc9605.png

3.   负载均衡

(实际上负载均衡的功能就是在反向代理之上的)

       nginx反向代理服务器接收到的请求数量,就是我们说的负载量请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则所以~将服务器接收到的请求按照规则分发的过程。其中负载均衡就分为硬件负载(f5硬件)和软件负载(nginx,lvs,haproxy等)

(1)weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

(2)fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。

(3)url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。

(4)Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

4.  web服务器

        nginx做web服务器,还功能跟apache的功能一致,可以通过定义server来创建多个web服务。

nginx的架构,功能基本上就是这些,可能总结的不足,望指导。后面会在nginx的系列中从nginx的安装,基本的web服务,再到代理一步步去说。

本文使用的图片和概念均来自与百度百科,如有侵权,请联系我删除。

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小肖同学..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值