Nginx详细介绍

来源:互联网 发布:网络银行业务 编辑:程序博客网 时间:2024/05/16 16:14

1、Nginx介绍

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。

2、Nginx作用

(1)直接作为http server(代替apache,对PHP需要FastCGI处理器支持)
(2)作为反向代理服务器实现负载均衡

3、相关概念解释

3.1 代理服务器

代理服务器(Proxy Server)一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。

举个通俗的例子,比如你家的门坏了,不能走出屋子,你只能借助你家后门并且通过邻居家的门走出屋子。完成这样一个目的,就等于说是借助其他通道到达你想要到达的目的地。代理服务器也一样,比如本地网络无法直接访问一些网站或者服务器,必须通过一个代理点服务器,那个服务器和你的本地网络是可以直接ping通的,然后你就必须设置这个代理服务器的一些参数,比如ip,端口,然后通过这个平台连接到其他网络区域。

一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。 Web代理(proxy)服务器是网络的中间实体。代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

代理服务器是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,起到防火墙的作用,保证其安全性。

3.2 反向代理

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

客户端(用户A)向反向代理服务器z发送请求,接着反向代理服务器Z将判断将向何处(原始服务器B)转交请求,获得原始服务器B返回的内容后,将获得的内容返回给客户端用户A。而客户端始终认为它访问的是原始服务器B而不是服务器Z。由于防火墙作用,只允许服务器Z进出,防火墙和反向代理共同作用保护了原始服务器B。

这里写图片描述

发向代理可以将防火墙后面的服务器提供给Internet用户访问。还可以为后端的多台服务器提供负载平衡或为后端较慢的服务器提供缓冲服务。

3.3 正向代理

正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器获取内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。客户端才能使用正向代理。

如客户端A(用户A,B)和原始服务器(服务器B)之间的服务器(代理服务器Z),为了从原始服务器获取内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

这里写图片描述

正向代理为防火墙内的局域网客户端提供了访问Internet的途径。还可以使用缓冲特性减少网络使用率。

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

3.4.1 用途差异

(1)正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率;

(2)反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

3.4.2 安全差异

(1)正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为经过授权的客户端提供服务;

(2)反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

4、Nginx优势

(1)作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高
(2)作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度
(3)作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
(4)在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源
(5)在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的
(6)在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
(7)总的来说Nginx具有很高的稳定性;支持热部署;代码质量非常高,代码很规范,手法成熟,模块扩展也很容易。

5、Nginx和Apache比较

5.1 相同点

(1)都是HTTP服务器软件
(2)功能上都采用模块化结构设计
(3)都支持通用的语言接口,如PHP、Perl、Python等
(4)支持正向、反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输

5.2 不同点

(1)Apache处理速度很慢,占用很多内存资源
(2)功能上,Apache所有模块支持动静态编译,Nginx模块都是静态编译的
(3)对Fcgi的支持:Apache支持的很不好,Nginx支持非常好
(4)处理连接方式:Nginx支持epoll,Apache不支持
(5)空间使用上:Nginx安装包仅几百K

1 0