我所理解的nginx

u=1375552705,3642822908&fm=26&gp=0.jpg

日常生活中,我们免不了要去一些拥挤的地方,比如火车站、公交站、银行。这些地方都有一个特征,都会设置多个服务点或者入口,大多数情况下,最近的入口会挤满人,而那些距离较远的服务点或者入口,人流密度一般会少很多。

其实,网站的建设也是一样的,一般的公司都会有好几台甚至更多的服务器来支撑。当用户集中访问的时候,如果没有任何机制来疏导用户的访问,完全随机或者就近原则的话,那么就会导致某些服务器的流量很大,而其它的服务器访问量很小。这不仅严重浪费了资源,而且还会拉长用户访问网站的RT(响应时间),影响用户体验,更严重的可能直接拖垮那些流量大的服务器。

这时候,我们就需要一个协调者,让这些用户的请求可以均匀的分派到不同的服务器上。这个协调者有很多,今天我们要说的这个协调者就是nginx。

目前,三大主流“协调者”:LVS、Nginx、HAproxy

什么是Nginx

Nginx是一个高性能且轻量级的WEB服务器,其特点是占有内存少、并发能力强。、

Nginx它能做什么?
         一   反向代理
         一   负载均衡
         一   HTTP服务器
         一   虚拟主机
         一   ......

  • 静态HTTP服务器

使用Nginx充当一个静态的WEB服务器,可以将服务器上的静态资源(HTML文档、css样式、js脚本、图片)通过HTTP协议展现给客户端。

  • 虚拟主机
    有的网站,比如自己的个人博客之类的,由于访问量太小,为了节省成本,可以将多个域名部署在同一台服务器上。例如将www.a.comwww.a.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,这样Nginx就将一台服务器变成了两台虚拟主机。

  • 反向代理和负载均衡

反向代理和负载均衡是Nginx中使用率最高的两个功能,可以说是它的灵魂所在。

作为前端,要了解的Nginx用户其实不是很多,掌握这两点在工作中就够用了。

什么是反向代理

有反比有正,在说反向代之前,我们先来看看什么是正向代理。

  • 正向代理

正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9lQkFGOVdWZFdGTWNlNW1hNDBrU3R1RnNzMkF4Z1lITnh1WHRTSkh1QlZpYU5DMkRjSGljQ2s3UHpBdDk2R21XQWVRU3MyWFM3d2ljSTh3SmQ3d0U3V1lLQS82NDA_d3hfZm10PWpwZWc.jpg

正向代理是客户端知道目标服务器在哪里,然后通过代理服务器去访问目标服务器,而目标服务器并不知道客户端通过什么来访问的,也不知道该请求是源于哪个客户端。

在正向代理中,客户端是被代理者。用租房为例,


aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9lQkFGOVdWZFdGTWNlNW1hNDBrU3R1RnNzMkF4Z1lITldFdkR1azRwcGNmc05lZWhBYWdZalgzbW5CMzZkSkhOSm03SFJHSDRvUFZFR3pJRVVBZ1VUZy82NDA_d3hfZm10PWpwZWc.jpg

这个过程中C(服务器)不认识A(客户端)只认识B(代理),而C并不知道A租了房子,只知道房子租给了B(代理)。

  • 反向代理

反向代理是架设在服务器上的,以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求的客户端。


image

在反向代理中,服务器上被代理者,对外提供服务,属于服务提供者。

反向代理的原理也可以用租房的例子来解释:

A(客户端)想组一个房子,然后通过某些渠道找到了B(代理),然后B(代理)就把这个房子租给了他。而实际上C(服务端)才是房东。B(代理)是中介,把这个房子租给了A(客户端)。这个过程中A(客户端)并不知道这个房子到底谁才是房东,他都有可能认为这个房子就是B(代理)的。

  • 正向代理和反向代理的区别

①  位置不同
正向代理:架设在客户机和目标主机之间
反向代理:架设在服务器端

②  服务对象不同
正向代理:代理客户端,服务端不知道实际发起请求的客户端
反正代理:代理服务端,客户端不知道实际提供服务的服务端

③  安全性不同
正向代理:允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务
反向代理:对外都是透明的,访问者并不知道自己访问的是哪一个代理


image
image

什么是负载均衡

其实前面我们在讲排队的例子的时候,说到将排队的人较平均的分散到各个入口,从而缩短排队时间,提高顾客的体验。这其实就是负载均衡的通俗解释了。

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

下面是没有负载均衡的WEB架构:


image

用户的请求直接通过 Internet 发送到了指定服务器,这种架构在用户量集中访问的时候就可能出现问题,例如响应时间长而影响用户的体验,最严重的可能是导致服务器挂掉。这对于个人网站或者小型网站来说,可能影响不是很大,但是对于一直都是大流量的网站来说,这是致命的,哪怕是只挂了几分钟,影响到的也是成千上万的用户

所以,为了提升网站的各方面能力,大型网站一般会把多台服务器组成一个集群对外提供服务。然而,我们访问网站的入口都是一个的,比如 www.a.com。那么当用户在浏览器输入 www.a.com 的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。

image

用户每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。简言之:哪里“人”少就往哪里去。

即便某个服务器因为某些其他原因挂了,负载均衡策略也会把用户转发到正常工作的服务器上去,从而不影响用户访问。

通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。

  • 负载均衡算法

负载均衡服务器在决定将请求转发到具体哪台真实服务器的时候,是通过负载均衡算法来实现的。它是一个负载均衡服务器的核心。

下面是几个常用的算法,这里做个简单介绍:

轮询:为第一个请求选择健康池中的第一个后端服务器,然后按顺序往后依次选择,即第二个请求就发给第二个后端服务器,以此类推,直到最后一个,然后循环。

最小连接:优先选择连接数最少,也就是压力最小的后端服务器,在会话较长的情况下可以考虑采取这种方式。

散列:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器,可以考虑采取这种方式。

不同的负载均衡服务器会个根据自身的业务需要选择不同的算法,就像电影院和火车站可能会选用不同的引导策略一样。火车站可能会把行李少的旅客分配到一个专门的入口,可能给即将发车的旅客分派到快捷入口,手持可扫描车票的用户单独分配到特殊入口等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容