Nginx的核心,完整,附加和轻量软件包有什么区别?


72

nginx在Ubuntu上是一个虚拟软件包,由官方存储库中的五个软件包之一提供(至少自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页面之间有着功能比较extrasfulllightnaxsi,但没有提到的core。14.04中有多少更改了?


二级 据我了解,它nginx不像Apache一样支持模块的运行时启用,安装nginx-extras影响性能会不会?


1
似乎有人做了功能比较表的最新版本,并在Google文档上共享了它:docs.google.com/spreadsheet/…–
Steven K

1
@StevenKath请注意,该文档仅基于Debian。它不涉及nginx核心,并且不包含用于消除纳克西风味的不稳定变化(因为维护起来并不容易)。
托马斯·沃德

Answers:


99

史蒂文(Steven)的答案涉及关键点以及每种口味的基本概述,但我会在包装方面做很多工作,并介绍其中非常不同的模块集,以提供对差异的更大描述。每个对于获得一个好的答案都是至关重要的。基本描述并不能使比较合理。(此外,赞扬史蒂文(Steven)引用了我的旧博客(甚至称我为“维护者”。我的意思是将nginx即将发布的主帖子移植到我的新博客中,但我没有机会)

另请注意,NGINX PPA中提供了NGINX Web服务器的最新软件包,这些软件包由我自己维护,几乎完全基于Debian。(稳定的PPA(截至本职位,目前为1.6.2;主线PPA(截至此职位,目前为1.7.7,预计1.7.8将于2014年12月4日着陆))


的不同风味nginx

不同的版本都是的同一版本nginx,但是Debian软件包维护者决定了这些版本,以便提供不同的功能集(用于nginx-extras)以及最低限度和最有效的“完整”功能集。 Web服务器通常已在网站中使用。我不知道选择某个功能的确切原因,但是在与IRC上Debian维护者之一的补充讨论中,我声明要确认我的初步评估,即每个变体都旨在成为一组不同的功能,一个不同的用例- light用于一组轻量级功能,这些full功能几乎可以满足最少的网站托管要求,可以提供更完整的功能集,而又不包含任何其他较重的功能,以及extras适用于Ubuntu中可以包含的软件包中的几乎所有内容。 naxsi15.04之前的版本是Naxsi变体,专门用于其中的最少模块,因为naxsi可能会占用大量资源。

据推测,NGINX的Debian维护者之一经常与Upstream NGINX进行私人对话,而我目前尚无法发布日志,因此我目前无法发布日志,NGINX 2.x将具有可加载模块支持。在这种情况下,lightfull,和extras将变得包含每个模块的单独的包装件,其调用的元数据包。但是,尚不清楚这种情况的发生日期,实际上也不知道哪个模块可以执行此操作。

按照目前的情况,该nginx虚拟软件包旨在仅安装可用版本之一。默认情况下,就像nginx-core主要一样,如果个人使用得更多,我们将很乐意nginx-core在虚拟包中看到并尝试安装的第一件物品。(但是,该nginx包装可以依赖的任何一种口味nginx,并且主要是在包装上使那些不需要特定口味偏好的人安装起来更加容易)

下面提供了每个变体中可用的特定模块的详细细分(基于Vivid debian/control文件Trusty debian/control文件(因为在Vivid中已删除了Naxsi软件包))。 请注意,这并不反映Ubuntu中最新的更改,因此您应该参考这些软件包描述以确保您已更新了准确的信息

  • nginx-core从14.04开始,它是Ubuntu信息库“主要”部分中的唯一样式,并且仅存在于Ubuntu信息库中(并且不存在于PPA或Debian中,也永远不会包含在Debian中)。它实际上与nginx-full风味相同,但不包含任何第三方模块。使用背后的原因nginx-full作为该变体的基础是,我们希望在内置的二进制文件中提供一套相对完善的核心模块,同时将第三方模块拒之门外。因此,它不包含任何第三方模块,因为安全团队对代码进行了审查,发现第三方模块具有广泛变化的编码样式,但不如包含nginx-tarball的那样很好地支持模块(在Main Inclusion Request / Report bug中对此进行了更深入的讨论,该bug包含讨论点并进一步回顾了有关Ubuntu Main for for Windows中可能包含的内容的讨论nginx)。软件包说明中提供了此处启用的模块的完整列表,我在此处进行了介绍:

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

    可选的HTTP模块:添加,调试,GeoIP,Gzip预压缩,HTTP Sub,图像过滤器,IPv6,Real IP,Spdy,SSL,Stub状态,替代,WebDAV,XSLT。

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

  • nginx-light是最淡的口味nginx。它在Universe资源库中,您必须启用它才能使用它。它不能够在大量可用的模块-core-full。它还包含第三方模块。其中可用的模块如下:

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

    可选的HTTP模块:身份验证请求,调试,Gzip预压缩,IPv6,实际Ip,SSL,存根状态。

    第三方模块:回声。

  • nginx-fullnginx包装中功能更丰富的口味之一。与它的light对应项一样,它在Universe存储库中。它支持from-nginx源tarball中大多数标准和可选的核心模块,以及其他旨在扩展nginx Web服务器功能的第三方模块。它的模块如下:

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

    可选的HTTP模块:添加,验证请求,调试,GeoIP,Gzip预压缩,HTTP子目录,图像过滤器,IPv6,真实IP,间谍,SSL,存根状态,替代,WebDAV,XSLT。

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

    第三方模块:Auth PAM,DAV Ext,Echo,HTTP替代筛选器,上游公平队列。

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

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

    可选的HTTP模块:添加,验证请求,调试,嵌入式Perl,FLV,GeoIP,Gzip预压缩,图像过滤器,IPv6,MP4,随机索引,真实IP,安全链接,间谍,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,Geo,Gzip,标题,索引,限制请求,限制区域,日志,地图,Memcached,代理,引用,重写,拆分客户端,SSI,上游,用户ID。

    可选的HTTP模块:调试,IPv6,真实IP,SSL,存根状态。

    第三方模块:纳克西(Naxsi),缓存清除,上游公平。


风味中的资源利用

尽管我不知道针对各种版本的都运行过任何基准测试nginx,但通常合理的假设是,nginx您使用的版本启用的功能越多,使用的资源就会越多。

但是,与Apache nginx相比,启用更多模块可能会占用大量内存,与启用模块后的Apache相比,Apache不会占用太多内存。(该声明的例外是naxsi风味。该风味总是吃很多资源,因为它既是Web应用程序防火墙又是Web服务器。)

如果找到基准,我会在其答案中添加基准,但同样,我不知道任何针对各种口味的基准都存在。虽然我跑没有车水马龙的网站,我还没有发现有什么真正的性能降低nginx-extrasnginx-fullnginx-light在PHP驱动的网站。


确实是规范的。当我在error.log安装后看到这条线时,这个整个问题就开始了nginx-extra[info] 19936#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf。它是共享的而不是RSS,但仍然让我感到奇怪。因此,性能令人怀疑,但这是次要的。
muru

2
@muru该push模块因使用大量共享内存而闻名。据我所知(对此我可能有一点错),共享内存在Web服务器上可能使用推入模块的所有站点之间使用。但是,该模块是第三方模块,因此,与模块有关的任何实际问题都应针对其维护者:)
Thomas Ward

1
不,没问题。PPA的任何较新版本都可以使用backports吗?而且,由于它们大概是从相同的来源构建的,因此安全小组应用到的补丁nginx-core也将提供给-full-extra,对吗?
muru

3
@muru不幸的是,PPA中版本的包装与Ubuntu分开完成。当前,将软件包反向移植到较早的版本是非常棘手的-最终在PPA中完成,因为我不必将Debian更改合并到Ubuntu更改中。自从Main Inclusion以来,我还没有研究过反向移植,因为要匹配旧版本中的可用内容,将不得不放弃许多更改。(并且naxsi软件包删除使现在无法反向移植15.04版本)。
托马斯·沃德

2
@muru是的,在14.04及更高版本中用作安全更新(或作为标准版本更新)的所有修补程序都将适用于该存储库nginx-core以及nginx该存储库中的其他可用版本,因为它们都基于相同的代码库。它们仅具有不同的./configure行来启用或禁用不同的模块。
托马斯·沃德

14

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

从最小到最大:

nginx-light:“基本版本”

基本功能的最小模块集。

nginx-naxsi:“使用naxsi的版本”

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

nginx-core:“核心版本”

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

这是第一个Canonical支持的nginx软件包。它位于Ubuntu“主”存储库中,而不是社区支持的“ Universe”存储库中。请参阅公告“ nginx-core现在已在Ubuntu Trusty 14.04 Main中使用!” 在维护者的非官方(老年人和现已解散)博客的存档或在旧的岗位上维护者的非官方博客的副本

Ubuntu Main(nginx-light,nginx-full,nginx-extras和nginx-naxsi)中未包含任何已建立的Nginx版本。Ubuntu安全团队表示,第三方模块在编码上有很大的不同,因此不被支持。

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

nginx-full:“标准版”

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

nginx-extras:“扩展版本”

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


1
一件事:据我了解,它nginx不像Apache那样支持启用模块,安装nginx-extras是否会影响性能?
muru 2014年

1
naxsi仅包含在-naxsi和-extras中,不包含在-core或-full中。使用-extras可能会影响性能,肯定比较轻的软件包要消耗更多的内存。
史蒂文·K

2
这个已经过期了。我将对此发表更完整的声明,因为我对nginx软件包有很多影响。
托马斯·沃德

1
@ThomasW。哇,您不是我上面从“维护者的博客”中引用的家伙吗?
史蒂文·K

1
@StevenKath Yeppers,我什至在我的回答中提到了这一点。由于Wordpress是一个邪恶的框架,因此我不得不将先前的博客下线,但这一点仍然存在。我与Ubuntu中的“官方维护者”相去甚远,但我可能对该软件包进行的维护最多,并且可能被认为是“非官方维护者”。
托马斯·沃德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.