一、介绍
Nginx是一个高性能的HTTP和反向代理server,也是一个IMAP/POP3/SMTP代理server。
Nginx是一款轻量级的Webserver/反向代理server以及电子邮件代理server。并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口站点及搜索引擎Rambler使用。
其特点是占有内存少。并发能力强。其实nginx的并发能力确实在同类型的网页server中表现较好。
Nginx相较于Apache\lighttpd具有占有内存少。稳定性高等优势,而且依靠并发能力强。丰富的模块库以及友好灵活的配置而闻名。
在Linux操作系统下。nginx使用epoll事件模型,得益于此。nginx在Linux操作系统下效率相当高。同一时候Nginx在OpenBSD或FreeBSD操作系统上採用类似于Epoll的高效事件模型kqueue.
二、名词解释
代理server
通常是指局域网内部的机器通过代理server发送请求到互联网上的server,代理server一般作用在client。
反向代理
client(用户A)向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将推断向何处(原始server)转交请求,并将获得的内容返回给client。而client始终任务它訪问的事原始serverB而不是serverZ。
因为防火墙作用。仅仅同意serverZ进出,防火墙和反向代理共同作用保护了院子资源serverB。
用途:将防火墙后面的server提供给Internet用户訪问。反向代理还能够为后端的多台server提供负载平衡或为后端较慢的server提供缓冲服务。
正向代理
正向代理是一个位于clientA和原始server(serverB)之间的server(代理serverZ),为了从原始server取得内容,用户A向代理serverZ发送一个请求并指定目标(serverB)。然后代理serverZ向serverB转交请求并将获得的内容返回给client。client必需要进行一些特别的设置才干使用正向代理。
用途:在防火墙内的局域网client提供訪问Internet的途径。还能够使用缓冲特性降低网络使用率。
从安全性来讲:
正向代理同意client通过它訪问随意站点而且隐藏client自身,因此你必须採取安全措施以确保仅为经过授权的client提供服务。
反向代理对外都是透明的。訪问者并不知道自己訪问的是一个代理。
三、Nginx VSApache
同样点:
1、都是HTTPserver软件
2、功能上都採用模块化结构设计
3、都支持通用的语言接口。如PHP、Perl、Python等
4、支持正向、反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输
不同点:
1、Apache处理速度非常慢。占用非常多内存资源
2、功能上,Apache全部模块支持动静态编译,Nginx模块都是静态编译的
3、对Fcgi的支持:Apache支持的非常不好,Nginx支持非常好
4、处理连接方式:Nginx支持epoll,Apache不支持
5、空间使用上:Nginx安装包仅几百K
四、Nginx优势
1、作为Webserver,Nginx处理静态文件、索引文件,自己主动索引的效率很高
2、作为代理server,Nginx能够实现无缓存的反向代理加速,提高站点执行速度
3、作为负载均衡server,Nginx既能够在内部直接支持Rails和PHP。也能够支持HTTP代理server对外进行服务,同一时候还支持简单的容错和利用算法进行负载均衡
4、在性能方面,Nginx是专门为性能优化而开发的。实现上非常注重效率。
它採用内核Poll模型。能够支持很多其它的并发连接。最大能够支持对5万个并发连接数的响应,并且仅仅占用非常低的内存资源
5、在稳定性方面,Nginx採取了分阶段资源分配技术,使得CPU与内存的占用率很低。Nginx官方表示。Nginx保持1万个没有活动的连接,而这些连接仅仅占用2.5MB内存,因此,类似DOS这种攻击对Nginx来说基本上是没有不论什么作用的
6、在高可用性方面,Nginx支持热部署,启动速度特别迅速。因此能够在不间断服务的情况下。对软件版本号或者配置进行升级,即使执行数月也无需又一次启动,差点儿能够做到7x24小时不间断地执行
Nginx具有非常高的稳定性;支持热部署。代码质量非常高。代码非常规范,手法成熟。模块扩展也非常easy;採用了一些os提供的最新特性如对sendfile(Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT(Linux 2.4+)的支持,从而大大提高了性能。