7 年前,Nginx 的份额还只是 3.9%,如今已达到 33.3 %,是增量最快的 Web 服务器。平均而言,在全球 Top 1000 万网站当中,每分钟有 1 网站转向 Nginx。同样是 7 年前,Apache 的份额是 71.5%,如今降到 50%。微软是 IIS 从 20.6% 降到 11.3%。
由此可见,Nginx 近年来市场份额持续攀升,越来越受开发者的青睐,今天,我们就一起来了解下Nginx。
Nginx 简介
Nginx是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系统中运行。
Nginx 由俄罗斯的程序设计师 Igor Sysoev 所开发,最初供俄国大型的入口网站及搜寻引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器器中表现较好。
Nginx 的特点
Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的 Apache 不同,nginx 不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。
整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。在 Linux 操作系统下,nginx 使用 epoll 事件模型,得益于此,nginx 在 Linux 操作系统下效率相当高。同时 Nginx 在 OpenBSD 或 FreeBSD 操作系统上采用类似于 epoll 的高效事件模型 kqueue。
可大量平行处理。Nginx 在官方测试的结果中,能够支持五万个平行连接,而在实际的运作中,可以支持二万至四万个平行链接。
Nginx 的模块与工作原理
Nginx 由内核和模块组成,正是有了这么多模块的支撑,Nginx 的功能才会如此强大。Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:
● 核心模块:HTTP 模块、EVENT 模块和 MAIL 模块
● 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块
● 第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模块。
Nginx 的模块从功能上分为如下三类:
● Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。
● Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,***由Nginx输出。
● Proxies (代理类模块)。此类模块是 Nginx 的 HTTP Upstream 之类的模块,这些模块主要与后端一些服务比如 FastCGI 等进行交互,实现服务代理和负载均衡等功能。
为什么选择 Nginx
Nginx 是一个很牛的高性能Web和反向代理服务器,相比其他服务器,它具有有很多非常优越的特性:
在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品:Nginx 在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应。
Nginx作为负载均衡服务器;Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理 服务器对外进行服务。 Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
Nginx 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验。
Nginx 是一个 [#installation 安装] 非常的简单, 配置文件非常简洁(还能够支持 perl 语法), Bugs 非常少的服务器,Nginx 启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级 。