当前位置: 首页>>技术问答>>正文


nginx的core,full,extras和light包之间有什么区别?

,

问题描述

Ubuntu上的nginx是由官方存储库中的五个软件包之一提供的虚拟软件包(至少截至14.04,默认为nginx-core,我相信):

$ apt-cache depends nginx | tail -n+2 | cut -d: -f 2 | sort -u
 nginx-core
 nginx-extras
 nginx-full
 nginx-light
 nginx-naxsi

这些软件包之间的区别是什么?它们的推荐用例是什么?

这种稍微旧的Debian Wiki page具有extrasfulllightnaxsi之间的特征比较,但没有提及core。它在14.04有多少变化?


secondary据我所知,nginx不支持像Apache这样的模块的运行时启用,那么安装nginx-extras会影响性能吗?

最佳解决办法

虽然史蒂文的答案涉及关键点以及每种口味的基本概要,但我会给你一个更大的差异描述,因为我在包装上工作了很多,而且模块中的模块非常不同。每个人都对一个好的答案绝对至关重要。基本描述对比较没有多大公平。 (另外,对史蒂文的称赞引用我的旧博客(甚至将我称为’maintainer’。我的意思是将nginx-is-coming-to-main帖子移植到我的新博客上,但我没有机会。)

另请注意,NGINX Web服务器的最新软件包可在我自己维护的NGINX PPA中获得,几乎完全基于Debian。 (Stable PPA(截至本文时为1.6.2); Mainline PPA(截至本文职位为1.7.7,1.7.8将于2014年12月4日登陆))


nginx的不同口味:

不同的风格都是nginx的相同版本,但是这些风味是由Debian软件包维护者决定的,以便提供不同的功能集(对于nginx-extras)以及Web服务器的最小和最小feature-effective ‘full’功能集。往往在网站上使用过。我不知道选择一个特征而不是另一个特征的确切原因,但是在与IRC上的一个Debian维护者的补充讨论中,一个声明肯定了我的初步评估,即每个变体旨在成为一组不同的特征。一个不同的用例 – light用于轻量级功能,满足最少的站点托管,full提供更全面的功能,不包括任何much-heavier附加功能,extras用于包含在包中的所有内容,可以包含在Ubuntu Linux系统。 naxsi,在15.04之前,是Naxsi变体,特别是其中只包含最少的模块,因为naxsi可能是相当耗费资源的。

据说,根据NGINX的Debian维护人员之一,我经常在私人谈话中与Upstream NGINX协调,我目前无法发布日志,NGINX 2.x将支持可加载模块。在这种情况下,lightfullextras将成为调用包含每个模块的各个包的元数据包。然而,这种情况的日期尚不清楚,哪些模块实际上也无法做到这一点。

目前的情况是,nginx虚拟软件包旨在安装其中一个可用版本。默认情况下,由于nginx-core是主要的,我们很乐意,如果个人使用它更多,nginx-core是第一个看到的项目和install-attempted在虚拟包中。 (但是,nginx包可以依赖nginx的任何一种口味,主要是为那些不需要任何特定口味偏好的人提供更容易的安装)

有关每种变体中可用特定模块的详细分类(基于Vivid debian/control文件和Trusty debian/control文件(因为Nividsi软件包已在Vivid中删除),如下所示。请注意,这并不反映Ubuntu中最新的更改,您应该参考这些包描述以确保您拥有更新,准确的信息:

  • nginx-core是Ubuntu存储库主要部分中唯一的风格,截至14.04,并且仅存在于Ubuntu存储库中(并且不在PPA或Debian中,并且不会包含在Debian中)。它实际上与nginx-full风味相同,但不包含任何第三方模块。使用nginx-full作为此变体的基础的原因是我们希望在构建的二进制文件中提供relatively-full-fledged核心模块集,同时保留第三方模块。因此,它不包含任何third-party模块,因为安全团队对代码进行了审查,发现第三方模块的编码风格差异很大,不像nginx-tarball-included模块那样得到很好的支持(这里讨论的更多) Main Inclusion Request/Report bug中的in-depth,其中包含有关可以包含在Ubuntu Main中用于nginx的讨论点和进一步的讨论。这里启用的模块的完整列表在包描述中,我在这里挑选:标准HTTP模块:核心,访问,验证基本,自动索引,浏览器,字符集,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,映射,Memcached,代理,引用,重写,SCGI,拆分客户端,SSI,上游,用户ID,UWSGI。可选HTTP模块:添加,调试,GeoIP,Gzip预压缩,HTTP子,图像过滤,IPv6,Real IP,Spdy,SSL,存根状态,替换,WebDAV,XSLT。邮件模块:邮件核心,IMAP,POP3,SMTP,SSL。

  • nginx-lightnginx中最轻的味道。它位于Universe存储库中,您必须启用它才能使用它。它不能在-core-full中启用大量模块。它还包含third-party模块。其中可用的模块如下:标准HTTP模块:核心,访问,验证基本,自动索引,字符集,空GIF,FastCGI,Gzip,标题,索引,日志,映射,代理,重写,上游。可选HTTP模块:验证请求,调试,Gzip预压缩,IPv6,Real Ip,SSL,存根状态。第三方模块:Echo。

  • nginx-fullnginx包装中更多feature-rich香料之一。与其light对应物一样,它位于Universe存储库中。它支持from-nginx源代码压缩包中标准和可选的大多数核心模块,以及旨在扩展nginx Web服务器功能的多个third-party模块。它的模块如下:标准HTTP模块:核心,访问,验证基本,自动索引,浏览器,字符集,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,Map,Memcached,代理,Referer,Rewrite,SCGI,Split Clients,SSI,Upstream,User ID,UWSGI。可选的HTTP模块:添加,验证请求,调试,GeoIP,Gzip预压缩,HTTP子,图像过滤,IPv6,Real IP,Spdy,SSL,存根状态,替换,WebDAV,XSLT。邮件模块:邮件核心,IMAP,POP3,SMTP,SSL。第三方模块:Auth PAM,DAV Ext,Echo,HTTP替换过滤器,上游公平队列。

  • nginx-extrasnginx包装中最多的feature-rich香精。和它的fulllight兄弟一样,它也在Universe存储库中。它支持nginx-full中的所有模块,还包括其他模块(例如Perl模块),以及更多third-party模块,旨在进一步扩展nginx Web服务器的功能。它的完整模块列表如下:标准HTTP模块:核心,访问,验证基本,自动索引,浏览器,字符集,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,Map,Memcached, Proxy,Referer,Rewrite,SCGI,Split Clients,SSI,Upstream,User ID,UWSGI。可选的HTTP模块:添加,验证请求,调试,嵌入式Perl,FLV,GeoIP,Gzip预压缩,图像过滤,IPv6,MP4,随机索引,真实IP,安全链接,Spdy,SSL,存根状态,替换,WebDAV,XSLT。邮件模块:邮件核心,IMAP,POP3,SMTP,SSL。第三方模块:Auth PAM,Chunkin,DAV Ext,Echo,Embedded Lua,Fancy Index,HttpHeadersMore,HTTP Substitution Filter,http push,Nginx Development Kit,Upload Progress,Upstream Fair Queue。

  • nginx-naxsi是nginx的变体,它具有Naxsi Web应用程序防火墙模块。它也是在Universe中,但Debian维护者不再支持这种风格,并且将在15.04版本的Ubuntu中完全删除。除了Naxsi WAF模块,它还包括比nginx-full更轻的模块。完整的模块列表如下:标准HTTP模块:核心,访问,验证基本,自动索引,浏览器,字符集,核心,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,映射,Memcached,代理,Referer,重写,拆分客户端,SSI,上游,用户ID。可选的HTTP模块:调试,IPv6,Real IP,SSL,Stub状态。第三方模块:Naxsi,Cache Purge,Upstream Fair。


口味中的资源使用

虽然我不知道在nginx的各种版本上运行过任何基准测试,但假设你使用的nginx版本越多feature-enabled就越合乎逻辑,它将使用的资源就越多。

但是,与启用了更多模块的内存傻瓜不同的Apache不同,nginx在启用模块时仍然不会占用与Apache相同的内存。 (此声明的例外是naxsi风格。这种风味总是占用更多资源,因为它是Web应用程序防火墙以及Web服务器。)

如果我找到它们,我会在这个答案中添加基准,但同样,我不知道各种口味相互之间存在任何现有的基准。即使我运行的站点没有大量流量,我也没有注意到PHP-driven站点上nginx-extrasnginx-fullnginx-light之间的任何实际性能下降。

次佳解决办法

这是一个非常high-level评估,主要基于the descriptions in the packages。 (我将无法为每个用户提供示例用例,但我想出了很多以满足我的好奇心,所以我也可以贡献它。)

从最小到最大:

nginx-light:”basic version”

基本功能的最小模块集。

nginx-naxsi:“与naxsi的版本”

最小集合,加上强化的“Nginx Anti Xss& Sql Injection”配置及其所需的插件。

nginx-core:”core version”

标准的nginx部署,少了third-party模块。

这是第一个Canonical-supported nginx包。它位于Ubuntu “main”存储库中,而不是community-supported “universe”存储库中。请参阅公告“nginx-core现在位于Ubuntu Trusty 14.04 Main!”在an archive of the maintainer’s unofficial (older and now defunct) blogcopy of the old post on the maintainer’s unofficial blog上:

none of the already-established flavors of nginx are included in Ubuntu Main (nginx-light, nginx-full, nginx-extras, and nginx-naxsi). The Ubuntu Security Team has said that the third-party modules are wildly different in coding and therefore cannot be supported.

To that end, we created a package called nginx-core which has been included in the Main repository. This package contains only the modules that ship with the stock nginx tarball. We do not include any third-party modules with this package, just the modules that come from NGINX upstream.

nginx-full:”standard version”

标准的nginx部署,包括frequently-used third-party模块。

nginx-extras:”extended version”

标准的nginx部署加上几个infrequently-used和大型模块。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1356.html,未经允许,请勿转载。