Nginx之(一)Nginx是什么

 

 

摘自:https://blog.csdn.net/u012152619/article/details/53821518web

Nginx("engine x")是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。数据库

Nginx代码彻底用C语言写成,其特色是占有内存少,并发能力强。官方测试号称最多可以支撑5万并发链接,在实际生产环境中跑到2~3万的并发链接数没什么压力。浏览器

说到Web服务器,Apache服务器和IIS服务器是两大巨头;可是运行速度更快、更灵活的Nginx 正在迎头遇上。Nginx到底有多火呢?据统计,全球活跃的网站中使用了Nginx的占比高达12.18%,中国大陆但凡你能说得上名字的网站几乎都在使用Nginx,好比百度、京东、新浪、网易、腾讯、淘宝等。缓存

 

先来扫一下盲,看看“代理”究竟是个什么玩意儿。安全

 

1.1 正向代理
有公就有母,有正就有反,阴阳共济,相辅相成。了解反向代理以前,先来看看什么是正向代理。服务器

咱们日常所说的代理服务器(Proxy Server)提供的就是正向代理服务,其功能是代理网络用户去取得网络信息。代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。
网络

HTTP的代理服务器既是Web服务器又是Web客户端。一个完整的代理请求过程为:客户端首先与代理服务器建立链接,接着根据代理服务器所使用的代理协议,请求对目标服务器建立链接、或者得到目标服务器的指定资源,而后代理服务器再将拿到的资源返回给客户端。session

但是,咱们的请求为何不直来直往,而要画蛇添足的经过代理服务器来转达呢?代理服务器的做用大大的,经过它能够实现多种功能并发

(1)共享IP地址负载均衡

好比,某个局域网内有十台电脑须要上网,可是只分配了一个IP地址。这时候就能够将惟一的IP地址赋予代理服务器,经过NAT(Network Address Translation)协议,让十台电脑都能与外网连通。发送至外网的请求一概经过代理服务器转发,代理服务器收到回应时,再转发给内网的请求者。

 

(2)高速缓存

大部分代理服务器都具备缓存的功能,就好像一个大的Cache,它有很大的存储空间,它不断将新取得数据存储到它本地的存储器上,若是浏览器所请求的数据在它本机的存储器上已经存在并且是最新的,那么它就不从新从Web服务器取数据,而直接将存储器上的数据传给用户的浏览器,这样就能显著提升浏览速度。

 

(3)过滤器

外面的世界很精彩,外面的世界也很危险。有了代理服务器,妈妈不再用担忧个人安全。

 

若是把天朝的整个网络看作一个超大的局域网,咱们只要访问境外的网站,都会通过一个代理服务器,就是备受“欢迎”的“长城防火墙”,也称“中国国家防火墙”,用于自动审查和过滤监控。这么看来,最担忧咱们安全的还得说是祖国母亲。

(4)突破自身IP的访问限制

道高一尺,魔高一丈。代理服务器是矛是盾,看你怎么用。

所谓的中国多媒体公众信息网和教育网都是独立的大型国家级局域网,是与国际互联网隔绝的。出于各类须要,某些集团或我的在两网之间开设了代理服务器,借助这些代理服务器的地址,就能够利访问国外网站,俗称FQ。

 

 

注意,正向代理与Nginx一毛钱关系都没有,以上内容只是为了引出反向代理的概念。

 

1.2 反向代理

正向代理是代理客户端来向Internet发送请求,而反向代理是代理服务端来接受Internet上的请求。

正向代理中,proxy和client同属一个LAN,对server透明;反向代理中,proxy和server同属一个LAN,对client透明。 实际上proxy在两种代理中作的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下。

再用两个例子来比较一下正向代理与反向代理的区别。

(1)正向代理

A同窗在大众创业、万众创新的大时代背景下开启他的创业之路,目前他遇到的最大的一个问题就是启动资金,因而他决定去找马云爸爸借钱,可想而知,最后碰一鼻子灰回来了,情急之下,他想到一个办法,找关系开后门,通过一番消息打探,原来A同窗的大学老师王老师是马云的同窗,因而A同窗找到王老师,托王老师帮忙去马云那借500万过来,固然最后事成了。不过马云并不知道这钱是A同窗借的,马云是借给王老师的,最后由王老师转交给A同窗。这里的王老师在这个过程当中扮演了一个很是关键的角色,就是代理,也能够说是正向代理,王老师代替A同窗办这件事,这个过程当中,真正借钱的人是谁,马云是不知道的,这点很是关键。

咱们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些上网工具扮演的就是典型的正向代理角色。用浏览器访问 http://www.google.com 时,被残忍的block,因而你能够在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。

 

(2)反向代理

你们都有过这样的经历,拨打10086客服电话,可能一个地区的10086客服有几个或者几十个,你永远都不须要关心在电话那头的是哪个,叫什么,男的,仍是女的,漂亮的仍是帅气的,你都不关心,你关心的是你的问题能不能获得专业的解答,你只须要拨通了10086的总机号码,电话那头总会有人会回答你,只是有时慢有时快而已。那么这里的10086总机号码就是咱们说的反向代理。客户不知道真正提供服务人的是谁。

反向代理隐藏了真实的服务端,当咱们请求 www.baidu.com 的时候,就像拨打10086同样,背后可能有成千上万台服务器为咱们服务,但具体是哪一台,你不知道,也不须要知道,你只须要知道反向代理服务器是谁就行了,www.baidu.com 就是咱们的反向代理服务器,反向代理服务器会帮咱们把请求转发到真实的服务器那里去。

使用反向代理的优点有不少,好比,隐藏和保护服务器资源、负载均衡,缓存静态内容,加密和SSL加速等。

 

1.3 Nginx的功能
Nginx的启动特别简单,而且几乎能够作到7*24不间断运行,即便运行数个月也不须要从新启动。还可以不间断服务的状况下进行软件版本的升级。

Nginx在作反向代理时,可以提供性能稳定而且灵活配置的转发功能。Nginx能够根据不一样的正则匹配,采起不一样的转发策略,好比图片文件结尾的走文件服务器,动态页面走web服务器。Nginx还对能够对返回结果进行异常判断,若是被分发的服务器存在异常,会将请求从新转发给另一台服务器,而后自动去除异常服务器。

1.3.1 保护服务器

 

 

当客户机向站点提出请求时,请求将转到代理服务器。而后,代理服务器经过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再经过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器。若是内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,而后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向URL。

这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的状况相对比,就算是侥幸攻击成功,做恶者充其量也仅限于访问单个事务中所涉及的信息。未经受权的用户没法访问到真正的内容服务器,由于防火墙通路只容许代理服务器有权进行访问。

1.3.2负载均衡

 

负载均衡服务器的做用是平衡集群中各个服务器的负载压力。

Nginx内置的负载均衡策略有3种:轮询,加权轮询,IP hash。同时支持扩展策略,彻底能够本身写一套规则交给Nginx去执行。

(1)轮询

 

这种策略简单易行,将请求平均的分配给每一个服务器去处理。

(2)加权轮询

 

 

 

升级版的轮询策略,权重越大的服务器会被分配越多的请求数量。

(3)IP hash

 

 

 

对客户端请求的IP进行hash操做,而后根据hash结果将同一个客户端IP的请求分发给同一台服务器进行处理,能够解决session不共享的问题。

1.3.3 web缓存

 

Nginx能够对不一样的文件作不一样的缓存处理,配置灵活,而且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容能够的进行增删管理。

相关文章
相关标签/搜索