不同口味的资源使用情况

不同口味的资源使用情况

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 维基页面extras有、fulllight之间的功能比较naxsi,但没有提到core。 14.04 中有多少变化?


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

答案1

注意:Debian 已对此进行调整,因此不再存在风格;这最终可能会在 23.10 中影响 Ubuntu。

虽然 Steven 的回答触及了关键点,并对每种风格做了非常基本的总结,但我将为您提供更详细的差异描述,因为我在包装方面投入了大量精力,每种风格中非常不同的模块集对于一个好的答案来说绝对至关重要。基本描述并不能很好地说明比较。(此外,感谢 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 软件包维护人员决定使用不同的版本以提供不同的功能集(针对nginx-extras)以及 Web 服务器往往在网站中使用的最低限度和功能最有效的“完整”功能集。我不知道选择某个功能而不是另一个功能的确切原因,但是在与 IRC 上的一位 Debian 维护人员进行补充讨论时,他发表了一份声明,肯定了我最初的评估,即每个变体都旨在为不同的用例提供不同的功能集 -light满足网站托管最低限度的轻量级功能集,full不包含任何更重的额外功能的更完整的功能集,以及extras可包含在 Ubuntu 中的软件包中的几乎所有内容。 naxsi在 15.04 之前,是 Naxsi 变体,其中只包含最低限度的模块,因为 naxsi 可能相当耗费资源。

据称,根据一位定期与上游 NGINX 进行私人对话(目前我无法发布日志)的 Debian NGINX 维护人员的说法,NGINX 2.x 将提供可加载模块支持。在这种情况下,、lightfullextras成为元包,它们将调用包含每个模块的单个包。但尚不清楚这种情况何时发生,也不知道哪些模块实际上能够做到这一点。

目前,nginx虚拟包的设计目的只是安装可用版本之一。默认情况下,就像nginx-core在主包中一样,我们希望人们更多地使用它,nginx-core它是虚拟包中第一个被看到并尝试安装的项目。(但是,该nginx包可以依赖于 的任何一种风格nginx,它主要是为了让那些不需要任何特定风格偏好的人更容易安装)

详细分析每个变体中可用的特定模块(基于生动debian/control档案可信赖debian/control文件(因为 Naxsi 包已从 Vivid 中删除))可从下方获得。 请注意,这并不反映 Ubuntu 中最新的更改,你应该参考这些软件包描述,以确保你拥有更新、准确的信息

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

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

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

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

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

    标准 HTTP 模块:核心、访问、Auth Basic、自动索引、字符集、空 GIF、FastCGI、Gzip、标头、索引、日志、地图、代理、重写、上游。

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

    第三方模块:Echo。

  • nginx-fullnginx是该软件包中功能最丰富的版本之一。与它的light对应版本一样,它位于 Universe 存储库中。它启用了 from-nginx 源码包中标准和可选的大多数核心模块,以及旨在扩展 nginx Web 服务器功能的几个第三方模块。它的模块如下:

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

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

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

    第三方模块:Auth PAM、DAV Ext、Echo、HTTP Substitution Filter、Upstream Fair Queue。

  • nginx-extras是该软件包中功能最丰富的版本nginx。与它的兄弟版本一样fulllight它也位于 Universe 存储库中。它启用了 Universe 存储库中的所有模块,nginx-full但还包含其他模块(例如 Perl 模块)和更多旨在进一步扩展 nginx Web 服务器功能的第三方模块。其完整模块列表如下:

    标准 HTTP 模块:核心、访问、Auth Basic、自动索引、浏览器、字符集、空 GIF、FastCGI、Geo、Gzip、标头、索引、限制请求、限制区域、日志、地图、Memcached、代理、Referer、重写、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 维护人员不再支持此版本,并且将从 Ubuntu 15.04 版本中完全删除。 除了 Naxsi WAF 模块外,它还包含一组比 更轻的模块nginx-full。模块的完整列表如下:

    标准 HTTP 模块:核心、访问、Auth Basic、自动索引、浏览器、字符集、核心、空 GIF、FastCGI、Geo、Gzip、标头、索引、限制请求、限制区域、日志、地图、Memcached、代理、Referer、重写、拆分客户端、SSI、上游、用户 ID。

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

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


不同口味的资源使用情况

虽然我不知道对 的各种版本进行过任何基准测试nginx,但通常可以合理地假设,您使用的 版本功能越多nginx,它使用的资源就越多。

但是,与 Apache 不同,Apache 在启用更多模块时可能会占用大量内存,但nginx在启用模块时,它仍然不会像 Apache 那样占用太多内存。(此说法的例外是风格naxsi。该风格总是消耗更多资源,因为它既是 Web 应用程序防火墙,也是 Web 服务器。)

如果我找到基准测试,我会在这个答案中添加它们,但同样,我不知道各种风格之间的任何现有基准测试。即使我运行的网站流量不大,我也没有注意到PHP 驱动的网站上nginx-extras、、nginx-full或之间的任何实际性能下降。nginx-light

答案2

我根据以下描述制作了一些表格:https://salsa.debian.org/nginx-team/nginx/-/blob/master/debian/control(截至撰写本文时,最新更新于 2020 年 6 月 30 日)。鉴于表格及其所基于的描述都是手动生成的,因此可能会有错误。

标准模块 nginx 核心 nginx-完整 nginx-light nginx-extras
✔️ ✔️ ✔️ ✔️
使用权 ✔️ ✔️ ✔️ ✔️
基本认证 ✔️ ✔️ ✔️ ✔️
自动索引 ✔️ ✔️ ✔️ ✔️
浏览器 ✔️ ✔️ ✔️
空 GIF ✔️ ✔️ ✔️ ✔️
快速CGI ✔️ ✔️ ✔️ ✔️
地理 ✔️ ✔️ ✔️
限制连接数 ✔️ ✔️ ✔️
限制请求 ✔️ ✔️ ✔️
地图 ✔️ ✔️ ✔️ ✔️
Memcached ✔️ ✔️ ✔️
代理人 ✔️ ✔️ ✔️ ✔️
引荐来源 ✔️ ✔️ ✔️
改写 ✔️ ✔️ ✔️ ✔️
新加坡化学工业协会 ✔️ ✔️ ✔️ ✔️
拆分客户端 ✔️ ✔️ ✔️
西澳大利亚州立大学 ✔️ ✔️ ✔️ ✔️
可选模块 nginx 核心 nginx-完整 nginx-light nginx-extras
添加 ✔️ ✔️ ✔️
授权请求 ✔️ ✔️ ✔️ ✔️
字符集 ✔️ ✔️ ✔️ ✔️
WebDAV ✔️ ✔️ ✔️ ✔️
音频视频 ✔️
地理IP ✔️ ✔️ ✔️
甘齐普 ✔️ ✔️ ✔️
Gzip ✔️ ✔️ ✔️ ✔️
Gzip 预压缩 ✔️ ✔️ ✔️ ✔️
标头 ✔️ ✔️ ✔️ ✔️
HTTP/2 ✔️ ✔️ ✔️ ✔️
图像过滤器 ✔️ ✔️ ✔️
指数 ✔️ ✔️ ✔️ ✔️
日志 ✔️ ✔️ ✔️ ✔️
MP4 ✔️
嵌入式 Perl ✔️
随机索引 ✔️
真实 IP ✔️ ✔️ ✔️ ✔️
✔️ ✔️ ✔️ ✔️
安全链接 ✔️
星海 ✔️ ✔️ ✔️ ✔️
SSL ✔️ ✔️ ✔️ ✔️
SSL 预读 ✔️ ✔️ ✔️
存根状态 ✔️ ✔️ ✔️ ✔️
代换 ✔️ ✔️ ✔️
线程池 ✔️ ✔️ ✔️ ✔️
上游 ✔️ ✔️ ✔️ ✔️
用户身份 ✔️ ✔️ ✔️
XSLT ✔️ ✔️ ✔️
邮件模块 nginx 核心 nginx-完整 nginx-light nginx-extras
邮件核心 ✔️ ✔️ ✔️
验证 HTTP ✔️ ✔️ ✔️
代理人 ✔️ ✔️ ✔️
SSL ✔️ ✔️ ✔️
信息访问协议 ✔️ ✔️ ✔️
POP3 ✔️ ✔️ ✔️
邮件传输协议 ✔️ ✔️ ✔️
溪流 nginx 核心 nginx-完整 nginx-light nginx-extras
流核心 ✔️ ✔️ ✔️
地理IP ✔️ ✔️ ✔️
GeoIP2 ✔️ ✔️
第三方模块 nginx 核心 nginx-完整 nginx-light nginx-extras
验证 PAM ✔️ ✔️
缓存清除 ✔️
DAV 扩展 ✔️ ✔️
回声 ✔️ ✔️ ✔️
花式指数 ✔️
GeoIP2 ✔️ ✔️
标题更多 ✔️
嵌入式 Lua ✔️
HTTP 替换 ✔️ ✔️
恩昌 ✔️
上传进度 ✔️
上游公平队列 ✔️ ✔️

答案3

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

从小到大:

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 版本(nginx-light、nginx-full、nginx-extras 和 nginx-naxsi)。Ubuntu 安全团队表示,第三方模块在编码上存在很大差异,因此无法支持。

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

nginx-full:“标准版”

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

nginx-extras:“扩展版本”

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

相关内容