本页使用了标题或全文手工转换

Nginx

维基百科,自由的百科全书
跳到导航 跳到搜索
Nginx
Nginx logo.svg
原作者 伊戈尔·赛索耶夫
开发者 NGINX, Inc.
初始版本 2004年10月4日,​13年前​(2004-10-04[1]
稳定版本
稳定版本
1.14.0
(2018年4月17日,​5个月前​(2018-04-17[2]
预览版本
1.15.3
(2018年8月28日,​26天前​(2018-08-28[1]
操作系统 Linux, BSD variantsOS XSolarisAIXHP-UXWindows[3]以及*nix[4]
语言 C[5]
类型 网页服务器邮件服务器反向代理服务器
许可协议 类BSD[6]
网站 nginx.org
源代码库 hg.nginx.org/nginx
github.com/nginx/nginx

Nginx(发音同engine x)是一个异步框架的 Web服务器,也可以用作反向代理负载平衡器HTTP缓存。该软件由 Igor Sysoev 创建,并于2004年首次公开发布。[7] 同名公司成立于2011年,以提供支持。[8]

Nginx是一款免费的开源软件,根据类BSD许可证的条款发布。一大部分Web服务器使用Nginx,[9] 通常作为负载均衡器[10]

特点[编辑]

Nginx可以部署在网络上使用FastCGI脚本、SCGI处理程序、WSGI应用服务器或Phusion乘客模块的动态HTTP内容,并可作为软件负载均衡器[11]

Nginx使用异步事件驱动的方法来处理请求。Nginx的模块化事件驱动架构[12]可以在高负载下提供更可预测的性能。[13]

Nginx是一款面向性能设计的HTTP服务器,相较于Apachelighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,Nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑从而削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,Nginx使用epoll事件模型,得益于此,Nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。

根据Netcraft在2016年11月网络服务器调查,[14] Nginx被发现是所有“活跃”站点(被调查站点的18.22%)和百万最繁忙站点(被调查站点的27.83%)中使用次数最多的Web服务器。根据W3Techs的数据,前100万个网站中的37.7%,前10万个网站中的49.7%,以及前10000个网站中的57.0%被使用。[15] 据BuiltWith统计,在全球前10000个网站中,有38.2%的网站使用Nginx。[16] 维基百科使用Nginx作为其SSL终止代理英语SSL termination proxy[17]OpenBSD 5.2版本(2012年11月1日)开始,Nginx成为了OpenBSD基础系统的一部分,提供了替代Apache 1.3系统的替代方案,[18] 但是后来被替换为OpenBSD自己的httpd(8)。[19]

可大量并行处理[编辑]

Nginx在官方测试的结果中,能够支持五万个并行连接,而在实际的运作中,可以支持二万至四万个并行连接。

与Apache相比[编辑]

Nginx 的编写有一个明确目标就是超越 Apache Web 服务器的性能。[20] Nginx 提供开箱即用的静态文件,使用的内存比 Apache 少得多,每秒可以处理大约四倍于 Apache 的请求。[21] 低并发下性能与 Apache 相当,有时候还低于,但是在高并发下 Nginx 能保持低资源低消耗高性能。还有高度模块化的设计,模块编写简单。配置文件简洁。

这种性能提升的代价是降低了灵活性,例如能够以每个文件为基础覆盖系统范围的访问设置( Apache 使用.htaccess 文件来完成这个工作,而 Nginx 并没有内置这样的功能)。[22] 以前,向 Nginx 添加第三方模块需要使用静态链接的模块从源代码重新编译应用程序。在版本 1.9.11 中部分地克服了这一点,增加了动态模块加载。但是,模块仍然必须与 Nginx 同时编译,而不是所有的模块都与这个系统兼容——有些需要更老的静态链接过程。[23]

但是 Apache 的模块多,bug 少,稳定。[原创研究?]Apache 的 select 模型在某些情况下比 Nginx 更高性能,据说是在只有几个文件的情况下。[原创研究?]

Nginx模块[编辑]

整体采用模块化设计是Nginx的一个重大特点,甚至http服务器核心功能也是一个模块。旧版本的Nginx的模块是静态的,添加和删除模块都要对Nginx进行重新编译,1.9.11以及更新的版本已经支持动态模块加载。

数据统计[编辑]

截至2017年三月,中国注册域名总数的9.65%使用 Nginx。[24]

截至2018年1月,Nginx 服务或者代理了全球 30.46% 的网站。[25]

PHP集成[编辑]

自PHP-5.3.3起,PHP-FPM加入到了PHP核心,编译时加上--enable-fpm即可提供支持。 PHP-FPM以守护进程在后台运行,Nginx响应请求后,自行处理静态请求,PHP请求则经过fastcgi_pass交由PHP-FPM处理,处理完毕后返回。 Nginx和PHP-FPM的组合,是一种稳定、高效的PHP运行方式,效率要比传统的Apache和mod_php高出不少。

PHP-FPM不支持Windows平台,由于没有fastcgi进程管理器管理php-cgi.exe,因此一旦php-cgi.exe崩溃退出,前端将失去响应,这时Nginx会返回“The page you are looking for is temporarily unavailable. Please try again later.”的错误信息。 因此在Windows上用Nginx和php-cgi.exe组合来运行PHP的方式并不可靠,稳定性有待提高。

其他

参考文献[编辑]

  1. ^ 1.0 1.1 CHANGES. [16 May 2017]. 
  2. ^ CHANGES-1.14. nginx.org. [2018-09-17]. 
  3. ^ nginx for Windows. [28 May 2014]. 
  4. ^ Tested OS and platforms. [15 October 2011]. 
  5. ^ The NGINX Open Source Project on Ohloh. ohloh.net. [7 March 2013]. 
  6. ^ Licensing. [18 January 2013]. 
  7. ^ Tony Mobily. Interview with Igor Sysoev, author of Apache's competitor NGINX. Free Software Magazine. 5 January 2012 [18 October 2013]. 
  8. ^ Notice of Exempt Offering of Securities. Form D. US Securities and Exchange Commission 17 October 2013. [15 September 2016]. 
  9. ^ https://news.netcraft.com/archives/2017/01/12/january-2017-web-server-survey.html
  10. ^ https://www.linode.com/docs/uptime/loadbalancing/use-nginx-as-a-front-end-proxy-and-software-load-balancer
  11. ^ Use nginx for Proxy Services and Software Load Balancing, 11 May 2010, by Sam Kleinman, Linode Library
  12. ^ The Architecture of Open Source Applications (Volume 2): nginx. aosabook.org. [10 June 2015]. 
  13. ^ Basic nginx Configuration by Sam Kleinman; 21 August 2010
  14. ^ November 2016 Web Server Survey. 22 November 2016 [19 December 2016]. 
  15. ^ Usage of web servers broken down by ranking. 19 December 2016 [19 December 2016]. 
  16. ^ Builtwith: nginx Usage Statistics. 19 December 2016 [19 December 2016]. 
  17. ^ Wikitech: HTTPS. Wikitech.wikimedia.org. 3 October 2011 [3 December 2011]. [永久失效链接]
  18. ^ OpenBSD Upgrade Guide: 5.1 to 5.2, 2012/11/06 15:00:27 sthen
  19. ^ Heads Up: Nginx Removed From Base. 
  20. ^ NGINX vs. Apache: Our View of a Decade-Old Question. NGINX. 9 October 2015 [28 December 2016]. 
  21. ^ Web server performance comparison. DreamHost. [28 December 2016]. 
  22. ^ NGINX vs. Apache (Pro/Con Review, Uses, & Hosting for Each) - HostingAdvice.com. HostingAdvice.com. 5 April 2016 [28 December 2016]. 
  23. ^ Introducing Dynamic Modules in NGINX 1.9.11 - NGINX. NGINX. 2016-02-09 [2017-01-13] (美国英语). 
  24. ^ 中国网络统计. [2017-03-02]. (原始内容存档于2017-03-02). 
  25. ^ January 2018 Web Server Survey. Netcraft. 2018-01-19. 

另请参阅[编辑]

外部链接[编辑]