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 

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

这个naxsi Debian Wiki页面在extrasfulllightnaxsi之间进行了function比较,但没有提到core 。 它在14.04有多少变化?


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

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

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


nginx的不同风味:

不同的风格都是nginx的相同版本,但是Debian软件包维护者决定了这些风格,以便提供不同的function集(对于nginx-extras )以及最小的和最具特色的“完整”。 Web服务器倾向于在网站中使用的一组function。 我不知道选择一个特征而不是另一个特征的确切原因,但是在与IRC上的一个Debian维护者的补充讨论中,一个声明肯定了我的初步评估,即每个变体旨在成为一组不同的特征。一个不同的用例 – 轻量级的function,可以满足最少的网站托管, full的function,不包括任何更重的额外function,以及包装中可以使用的所有内容的extras包含在Ubuntu中。 naxsi ,在15.04之前,是Naxsi变体,特别是只有最少的模块,因为naxsi可能是相当资源密集型的。

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

目前的情况是, nginx虚拟包旨在安装其中一个可用版本。 默认情况下,因为nginx-core是主要的,我们希望如果个人使用它更多, nginx-core是在虚拟包中看到和安装尝试的第一个项目。 (但是, nginx包可以依赖于nginx任何一种,并且主要用于使那些不需要任何特定风味偏好的人更容易安装)

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

  • nginx-core是Ubuntu存储库主要部分中唯一的风格,截至14.04,并且仅存在于Ubuntu存储库中(并且不在PPA或Debian中,并且不会包含在Debian中)。 它实际上与nginx-full风格完全相同,但不包含任何第三方模块。 使用nginx-full作为此变体的基础的原因是我们希望在构建的二进制文件中提供相对完整的核心模块集,同时保留第三方模块。 因此,它不包含任何第三方模块,因为安全团队对代码进行了审查,发现第三方模块的编码风格差异很大,不像nginx-tarball那样得到很好的支持。模块(在主要包含请求/报告错误中对此进行了更深入的讨论,其中包含讨论点以及有关可以包含在Ubuntu Main for nginx中的内容的进一步审核讨论)。 这里启用的模块的完整列表在包描述中,我在这里挑选过:

    标准HTTP模块:核心,访问,validation基本,自动索引,浏览器,字符集,空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-light最轻的味道。 它位于Universe存储库中,您必须启用它才能使用它。 它不能在-core-full启用大量可用模块。 它还包含第三方模块。 其中可用的模块如下:

    标准HTTP模块:核心,访问,validation基本,自动索引,字符集,空GIF,FastCGI,Gzip,标题,索引,日志,映射,代理,重写,上游。

    可选HTTP模块:validation请求,调试,Gzip预压缩,IPv6,Real Ip,SSL,存根状态。

    第三方模块:Echo。

  • nginx-fullnginx包中function更丰富的一种。 就像它的light对应物一样,它位于Universe存储库中。 它支持from-nginx源代码tarball中标准和可选的大多数核心模块,以及几个旨在扩展nginx Web服务器function的第三方模块。 它的模块如下:

    标准HTTP模块:核心,访问,validation基本,自动索引,浏览器,字符集,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,地图,Memcached,代理,引用,重写,SCGI ,拆分客户端,SSI,上游,用户ID,UWSGI。

    可选的HTTP模块:添加,validation请求,调试,GeoIP,Gzip预压缩,HTTP子,图像过滤,IPv6,Real IP,Spdy,SSL,存根状态,替换,WebDAV,XSLT。

    邮件模块:邮件核心,IMAP,POP3,SMTP,SSL。

    第三方模块:Auth PAM,DAV Ext,Echo,HTTP替换filter,上游公平队列。

  • nginx-extrasnginx包中function最丰富的。 就像它的fulllight兄弟一样,它也存在于Universe存储库中。 它支持nginx-full所有模块,但还包括其他模块(例如Perl模块),以及更多旨在进一步扩展nginx Web服务器function的第三方模块。 其完整的模块列表如下:

    标准HTTP模块:核心,访问,validation基本,自动索引,浏览器,字符集,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,地图,Memcached,代理,引用,重写,SCGI ,拆分客户端,SSI,上游,用户ID,UWSGI。

    可选的HTTP模块:添加,validation请求,调试,嵌入式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-naxsinginx-naxsi的变体,它具有Naxsi Web应用程序防火墙模块。 它也是在Universe中,但Debian维护者不再支持这种风格,并且将在15.04版本的Ubuntu中完全删除。 除了Naxsi WAF模块,它还包含比nginx-full更轻的模块集。 完整的模块列表如下:

    标准HTTP模块:核心,访问,validation基本,自动索引,浏览器,字符集,核心,空GIF,FastCGI,地理位置,Gzip,标题,索引,限制请求,限制区域,日志,地图,Memcached,代理,引用,重写,拆分客户端,SSI,上游,用户ID。

    可选的HTTP模块:调试,IPv6,Real IP,SSL,Stub状态。

    第三方模块:Naxsi,Cache Purge,Upstream Fair。


口味中的资源使用

虽然我不知道已经在各种各样的nginx上运行过任何基准测试,但通常认为你使用的nginx版本function越多,它所使用的资源就越多。

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

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

这是一个非常高级的评估,主要基于包中的描述 。 (我将无法为每个用户提供示例用例,但我想出了很多以满足我的好奇心,所以我也可以贡献它。)

从最小到最大:

nginx-light:“基本版”

基本function的最小模块集。

nginx-naxsi:“版本与naxsi”

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

nginx-core:“核心版”

标准的nginx部署,少了第三方模块。

这是Canonical支持的第一个nginx包。 它位于Ubuntu“主”存储库中,而不是社区支持的“Universe”存储库。 看到公告“nginx-core现在在Ubuntu Trusty 14.04 Main!” 在维护者的非官方(旧的和现已解散)博客的存档或维护者的非官方博客上的旧post的副本上 :

在Ubuntu Main(nginx-light,nginx-full,nginx-extras和nginx-naxsi)中都没有包含已经建立的nginx版本。 Ubuntu安全团队表示,第三方模块在编码方面存在很大差异,因此无法支持。

为此,我们创建了一个名为nginx-core的包,它已包含在主存储库中。 此软件包仅包含库存nginx tarball附带的模块。 我们不包含任何带有此软件包的第三方模块,只包含来自NGINX上游的模块。

nginx-full:“标准版”

标准的nginx部署,包括常用的第三方模块。

nginx-extras:“扩展版”

标准的nginx部署以及几个不常使用和较大的模块。