nginx 的 core、full、extras 和 light 包有什么区别?

mur*_*uru 83 nginx

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
Run Code Online (Sandbox Code Playgroud)

这些包之间有什么区别,推荐的用例是什么?

这个有点老的Debian Wiki页面之间有着功能比较extrasfulllightnaxsi,但没有提到的core。14.04 有多少变化?


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

Tho*_*ard 112

虽然史蒂文的回答触及了关键点和每种口味的非常基本的总结,但我会给你一个更大的差异描述,因为我在包装上做了很多工作,以及非常不同的模块集每个对于一个好的答案都是绝对关键的。基本描述对比较没有多大意义。(另外,感谢 Steven 引用我的旧博客(甚至称我为“维护者”。我打算将 nginx-is-coming-to-main 帖子移植到我的新博客,但我没有机会.)

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


的不同风味nginx

不同的风格都是 的相同版本nginx,但是风格是由 Debian 软件包维护者决定的,以提供不同的功能集(for nginx-extras)以及最低限度和最有效的“完整”功能集网络服务器往往在网站中使用。我不知道选择一个特性而不是另一个特性的确切原因,但是在与 IRC 上的一个 Debian 维护者的补充讨论中,做出了一个声明,确认了我的初步评估,每个变体都旨在成为一组不同的特性一个不同的用例 -light用于满足最低限度的站点托管的轻量级功能集,full用于更完整的功能集而不包括任何更重的附加功能,以及extras对于几乎可以包含在 Ubuntu 中的包中的所有内容。 naxsi在 15.04 之前,是 Naxsi 变体,特别是其中只有最少的模块,因为 naxsi 可能是相当资源密集型的。

据推测,根据 NGINX 的一位 Debian 维护者的说法,他经常在私人对话中与上游 NGINX 进行协调,我目前无法发布日志,NGINX 2.x 将具有可加载模块支持。在这种情况下,lightfullextras将成为调用包含每个模块的单个包的元包。然而,这种情况发生的日期尚不清楚,也不知道哪些模块实际上能够做到这一点。

就目前而言,nginx虚拟包旨在仅安装可用版本之一。默认情况下,就像nginx-core在 main 中一样,如果人们更多地使用它,我们会很nginx-core高兴,它是虚拟包中看到和尝试安装的第一个项目。(但是,该nginx包可以依赖 的任何一种风格nginx,主要是为了让那些不需要任何特定风格偏好的人更容易安装)

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

  • nginx-core从 14.04 开始,它是 Ubuntu 存储库主要部分中的唯一风格,并且仅存在于 Ubuntu 存储库中(并且不在 PPA 或 Debian 中,并且永远不会包含在 Debian 中)。它实际上与nginx-full风味相同,但不包含任何第三方模块。使用背后的原因nginx-full作为此变体的基础,我们希望在构建的二进制文件中提供一组相对完整的核心模块,同时将第三方模块排除在外。因此,它不包含任何第三方模块,因为安全团队对代码进行了审查,发现第三方模块具有广泛不同的编码风格,不如包含的 nginx-tarball 得到很好的支持模块(这在Main Inclusion Request/Report bug 中进行了更深入的讨论,其中包含讨论点和关于 Ubuntu Main for 中可以包含的内容的进一步审查讨论nginx)。此处启用的模块的完整列表在包描述中,我在此处对其进行了挑剔:

    标准 HTTP 模块:Core、Access、Auth Basic、Auto Index、Browser、Charset、Empty GIF、FastCGI、Geo、Gzip、Headers、Index、Limit Requests、Limit Zone、Log、Map、Memcached、Proxy、Referer、Rewrite、SCGI 、拆分客户端、SSI、上游、用户 ID、UWSGI。

    可选 HTTP 模块:添加、调试、GeoIP、Gzip 预压缩、HTTP 子、图像过滤器、IPv6、真实 IP、Spdy、SSL、存根状态、替换、WebDAV、XSLT。

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

  • nginx-lightnginx可用的最轻的味道。它位于 Universe 存储库中,您必须启用它才能使用它。它不会启用-core或 中可用的大量模块-full。它还包含第三方模块。其中可用的模块如下:

    标准 HTTP 模块:Core、Access、Auth Basic、Auto Index、Charset、Empty GIF、FastCGI、Gzip、Headers、Index、Log、Map、Proxy、Rewrite、Upstream。

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

    第三方模块:Echo。

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

    标准 HTTP 模块:Core、Access、Auth Basic、Auto Index、Browser、Charset、Empty GIF、FastCGI、Geo、Gzip、Headers、Index、Limit Requests、Limit Zone、Log、Map、Memcached、Proxy、Referer、Rewrite、SCGI 、拆分客户端、SSI、上游、用户 ID、UWSGI。

    可选 HTTP 模块:添加、身份验证请求、调试、GeoIP、Gzip 预压缩、HTTP 子、图像过滤器、IPv6、真实 IP、Spdy、SSL、存根状态、替换、WebDAV、XSLT。

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

    第三方模块:Auth PAM、DAV Ext、Echo、HTTP 替换过滤器、上游公平队列。

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

    标准 HTTP 模块:Core、Access、Auth Basic、Auto Index、Browser、Charset、Empty GIF、FastCGI、Geo、Gzip、Headers、Index、Limit Requests、Limit Zone、Log、Map、Memcached、Proxy、Referer、Rewrite、SCGI 、拆分客户端、SSI、上游、用户 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 模块:Core、Access、Auth Basic、Auto Index、Browser、Charset、Core、Empty GIF、FastCGI、Geo、Gzip、Headers、Index、Limit Requests、Limit Zone、Log、Map、Memcached、Proxy、Referer、Rewrite 、拆分客户端、SSI、上游、用户 ID。

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

    第三方模块:Naxsi、缓存清除、上游公平。


不同口味之间的资源使用

虽然我不知道已经上的各种口味运行任何基准测试的nginx,它通常是合乎逻辑的假设是,功能更使版本的nginx使用,更多的资源,它将使用。

但是,与启用更多模块的 Apache 可能是内存婊子不同,与启用nginx模块时的 Apache 相比,它仍然不会消耗那么多的内存。(此声明的例外是naxsi风味。这种风味总是会占用更多资源,因为它既是 Web 应用程序防火墙,也是 Web 服务器。)

如果我找到它们,我会在这个答案中添加基准,但同样,我不知道各种风格相互之间的任何现有基准。虽然我跑没有车水马龙的网站,我还没有发现有什么真正的性能降低nginx-extrasnginx-fullnginx-light在PHP驱动的网站。

  • @muru 不幸的是,PPA 中版本的打包是与 Ubuntu 分开完成的。目前,将软件包向后移植到旧版本变得非常棘手 - 它最终是在 PPA 中完成的,因为我不必将 Debian 更改合并到 Ubuntu 更改中。自 Main Inclusion 以来,我没有研究过向后移植,因为必须删除许多更改以匹配旧版本中可用的更改。(并且 naxsi 软件包下降使得现在不可能向后移植 15.04 版本)。 (3认同)
  • @muru `push` 模块以使用大量共享内存而闻名。据我所知(我可能在这方面略有错误),该共享内存用于可能使用推送模块的 Web 服务器上的所有站点。但是,该模块是第三方模块,因此任何真正的问题都应直接针对其维护者:) (2认同)
  • @muru 是的,在 14.04 及更高版本中作为安全更新(或作为标准版本更新)应用的任何补丁都将适用于 `nginx-core` 以及该存储库中可用的其他类型的 `nginx`,因为它们都借鉴了相同的代码库。它们只是有不同的 `./configure` 行来启用或禁用不同的模块。 (2认同)

Ste*_*n K 16

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

从最小到最大:

nginx-light:“基本版”

基本功能的最小模块集。

nginx-naxsi: "naxsi 版本"

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

nginx-core:“核心版本”

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

这是第一个 Canonical 支持的 nginx 包。它位于 Ubuntu“主”存储库中,而不是社区支持的“宇宙”存储库中。请参阅公告“nginx-core 现在在 Ubuntu Trusty 14.04 Main 中!” 在维护者的非官方(较旧且现已不复存在)博客的档案维护者的非官方博客上的旧帖子副本上

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

为此,我们创建了一个名为 nginx-core 的包,它已包含在主存储库中。这个包只包含随 nginx tarball 一起提供的模块。我们没有在这个包中包含任何第三方模块,只包含来自 NGINX 上游的模块。

nginx-full:“标准版”

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

nginx-extras:“扩展版本”

标准的 nginx 部署加上几个不常用和较大的模块。

  • 这个已经过期了。我将就此发表更完整的声明,因为我对 nginx 包有很大的影响。 (2认同)

jam*_*lin 6

我根据https://salsa.debian.org/nginx-team/nginx/-/blob/master/debian/control的描述制作了一些表格(截至撰写本文时,最后更新时间为 2020 年 6 月 30 日) . 鉴于表格和它们所基于的描述是手工生成的,可能存在错误。

标准模块 nginx核心 nginx-full nginx轻 nginx-extras
?? ?? ?? ??
使用权 ?? ?? ?? ??
认证基础 ?? ?? ?? ??
自动索引 ?? ?? ?? ??
浏览器 ?? ?? ??
空的 GIF ?? ?? ?? ??
快速CGI ?? ?? ?? ??
地理 ?? ?? ??
限制连接 ?? ?? ??
限制请求 ?? ?? ??
地图 ?? ?? ?? ??
内存缓存 ?? ?? ??
代理 ?? ?? ?? ??
推荐人 ?? ?? ??
改写 ?? ?? ?? ??
SCGI ?? ?? ?? ??
拆分客户 ?? ?? ??
UWSGI ?? ?? ?? ??
可选模块 nginx核心 nginx-full nginx轻 nginx-extras
添加 ?? ?? ??
身份验证请求 ?? ?? ?? ??
字符集 ?? ?? ?? ??
网络DAV ?? ?? ?? ??
FLV ??
地理IP ?? ?? ??
钢拉链 ?? ?? ??
压缩包 ?? ?? ?? ??
Gzip 预压缩 ?? ?? ?? ??
标题 ?? ?? ?? ??
HTTP/2 ?? ?? ?? ??
图像过滤器 ?? ?? ??
指数 ?? ?? ?? ??
日志 ?? ?? ?? ??
MP4 ??
嵌入式 Perl ??
随机索引 ??
真实IP ?? ?? ?? ??
?? ?? ?? ??
安全链接 ??
SSI ?? ?? ?? ??
安全证书 ?? ?? ?? ??
SSL 预读 ?? ?? ??
存根状态 ?? ?? ?? ??
代换 ?? ?? ??
线程池 ?? ?? ?? ??
上游的 ?? ?? ?? ??
用户身份 ?? ?? ??
XSLT ?? ?? ??
邮件模块 nginx核心 nginx-full nginx轻 nginx-extras
邮件核心 ?? ?? ??
验证 HTTP ?? ?? ??
代理 ?? ?? ??
安全证书 ?? ?? ??
IMAP ?? ?? ??
POP3 ?? ?? ??
SMTP ?? ?? ??
溪流 nginx核心 nginx-full nginx轻 nginx-extras
流核心 ?? ?? ??
地理IP ?? ?? ??
地理IP2 ?? ??
第三方模块 nginx核心 nginx-full nginx轻 nginx-extras
验证PAM ?? ??
缓存清除 ??
DAV分机 ?? ??
回声 ?? ?? ??
花式指数 ??
地理IP2 ?? ??
标题 更多 ??
嵌入式 Lua ??
HTTP 替换 ?? ??
南昌 ??
上传进度 ??
上游公平队列 ?? ??

  • 你能把那些“X”替换成“✔️”吗?他们具有误导性。 (4认同)
  • @КонстантинВан 完成。 (2认同)