当前位置: 首页 > 科技观察

学习Nginx,让你的web应用性能提升10倍!

时间:2023-03-14 23:09:02 科技观察

7年前,Nginx的份额仅为3.9%,如今已达到33.3%,成为增长最快的Web服务器。平均每分钟,全球排名前1000万的网站中就有1个切换到Nginx。同样在7年前,Apache的份额是71.5%,现在已经降到了50%。微软将IIS从20.6%下降到11.3%。可以看出,近几年Nginx的市场占有率持续上升,越来越受到开发者的青睐。今天,让我们一起来了解一下Nginx。Nginx简介Nginx是一个轻量级的web服务器/反向代理服务器和邮件(IMAP/POP3)代理服务器,在类BSD协议下发布,可以运行在UNIX、GNU/Linux、BSD、MacOSX、Solaris上和MicrosoftWindows操作系统。Nginx由俄罗斯程序员IgorSysoev开发,最初被俄罗斯的大型门户和搜索引擎Rambler(俄语:Рамблер)使用。它的特点是内存少,并发性强。事实上,nginx的并发性在同类型的web服务器中确实表现的更好。Nginx的特性Nginx是一个面向性能的HTTP服务器。与Apache、lighttpd相比,具有内存少、稳定性高等优点。与老版本(<=2.2)的Apache不同,nginx没有采用每客户端一个线程的设计模型,而是充分利用异步逻辑减少上下文调度开销,因此具有更强的并发服务能力。整体设计模块化,具有丰富的模块库和第三方模块库,配置灵活。在Linux操作系统下,nginx使用epoll事件模型。得益于此,nginx在Linux操作系统下相当高效。同时,Nginx在OpenBSD或FreeBSD操作系统上使用kqueue这种类似于epoll的高效事件模型。大规模并行处理是可能的。根据官方测试结果,Nginx可以支持5万个并行连接,实际运行中可以支持2万到4万个并行连接。Nginx模块及工作原理Nginx由内核和模块组成。正是有了这么多模块的支持,Nginx才如此强大。Nginx模块在结构上分为核心模块、基础模块和第三方模块:●核心模块:HTTP模块、EVENT模块和MAIL模块●基础模块:HTTP访问模块、HTTPFastCGI模块、HTTPProxy模块和HTTPRewrite模块●第三-party模块:HTTPUpstreamRequestHash模块、Notice模块和HTTPAccessKey模块。Nginx模块按功能分为以下三类:●Handlers(处理器模块)。这些模块直接处理请求,并执行输出内容和修改头部信息等操作。Handlers处理器模块一般只有一个。●过滤器(过滤器模块)。这类模块主要是修改其他处理器模块输出的内容,最后由Nginx输出。●Proxies(代理类模块)。这样的模块就是Nginx的HTTPUpstream之类的模块。这些模块主要与FastCGI等一些后端服务进行交互,实现服务代理、负载均衡等功能。为什么选择NginxNginx是一款出色的高性能Web和反向代理服务器。与其他服务器相比,它有很多非常优越的特点:在高连接并发的情况下,Nginx是Apache服务器的一个很好的替代品:Nginx在美国是虚拟主机业务中老板们经常选择的软件平台之一.能够支持多达50,000个并发连接的响应。Nginx用作负载均衡服务器;Nginx在内部可以直接支持Rails和PHP程序对外服务,也可以支持对外作为HTTP代理服务器。Nginx是用C写的,在系统资源开销和CPU使用效率上都比Perlbal好很多。Nginx作为邮件代理服务器:Nginx也是一个非常优秀的邮件代理服务器(开发本产品的目的之一,最初就是作为邮件代理服务器开发的),Last.fm描述了成功的美妙的使用体验。Nginx是一个[#installation安装]非常简单,配置文件非常简洁(也可以支持perl语法),bug极少的服务器,Nginx非常容易上手,几乎可以做到7*24不间断运行,即使数月不重启。您还可以在不中断服务的情况下升级软件版本。