学会Nginx,10倍提升你的Web应用性能!

服务器
Nginx是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系统中运行。

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 不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级 。

责任编辑:武晓燕 来源: Web开发
相关推荐

2018-08-23 17:45:52

2020-07-21 15:40:55

NginxJava服务器

2014-03-26 10:00:06

RailsRails性能

2019-09-26 08:33:51

Nginx技术Java

2011-07-01 10:11:39

2013-08-09 14:18:33

2020-03-26 12:38:15

代码节点数据

2013-01-14 12:24:06

Firefox OS

2023-11-06 08:01:09

Go同步异步

2015-12-14 10:39:14

2020-07-22 08:30:02

代码开发工具

2023-11-07 11:11:42

Go性能

2014-04-24 10:11:17

iOS性能调优

2009-10-14 20:37:41

sun闪存固态硬盘

2013-04-01 00:16:41

飞鱼星无线云无线AP

2010-04-02 15:20:44

惠普成功案例

2010-08-25 09:48:14

W3CWeb性能工作组

2021-12-29 11:06:25

Java代码技巧

2009-07-16 10:57:04

虚拟化新功能性能

2009-07-17 19:09:42

虚拟化VMware服务器
点赞
收藏

51CTO技术栈公众号