concat: NGINX HTTP 连接模块
安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
- RedHat Enterprise Linux 7、8、9 和 10
- CentOS 7、8、9
- AlmaLinux 8、9
- Rocky Linux 8、9
- Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-concat
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-concat
通过在 /etc/nginx/nginx.conf 的顶部添加以下内容来启用该模块:
load_module modules/ngx_http_concat_module.so;
本文档描述了 nginx-module-concat v1.2.3,于 2020 年 1 月 15 日发布。
介绍
这是一个与 tengine 一起分发的模块,tengine 是一个用于电子商务/拍卖网站 Taobao.com 的 Nginx 发行版。该发行版包含一些在 Nginx 场景中新的模块。ngx_http_concat 模块就是其中之一。
该模块受到 Apache 的 modconcat 的启发。它遵循相同的模式来启用连接。它使用两个 ?,如下所示:
http://example.com/??style1.css,style2.css,foo/style3.css
如果存在 第三个 ?,则将其视为 版本字符串。如下所示:
http://example.com/??style1.css,style2.css,foo/style3.css?v=102234
配置示例
location /static/css/ {
concat on;
concat_max_files 20;
}
location /static/js/ {
concat on;
concat_max_files 30;
}
模块指令
concat on | off
默认值: concat off
上下文: http, server, location
在给定上下文中启用连接。
concat_types MIME types
默认值: concat_types: text/css application/x-javascript
上下文: http, server, location
定义在给定上下文中可以连接的 MIME 类型。
concat_unique on | off
默认值: concat_unique on
上下文: http, server, location
定义是否仅可以连接给定 MIME 类型的文件,或者是否可以连接多个 MIME 类型。例如,如果设置为 off,则在给定上下文中可以连接 JavaScript 和 CSS 文件。
请注意,默认值为 on,这意味着在给定上下文中仅连接具有相同 MIME 类型的文件。因此,如果您有 CSS 和 JS,您不能这样做:
http://example.com/static/??foo.css,bar/foobaz.js
为了做到这一点,您 必须 将 concat_unique off 设置为 off。这适用于您决定通过 concat_types 添加相应 MIME 类型来连接的任何其他类型的文件。
concat_max_files number
默认值: concat_max_files 10
上下文: http, server, location
定义在给定上下文中可以连接的 最大 文件数量。请注意,给定的 URI 不能大于您平台的页面大小。在 Linux 上,您可以通过以下命令获取页面大小:
getconf PAGESIZE
通常为 4k。因此,如果您尝试在给定上下文中连接大量文件,您可能会遇到这个限制。为了克服该操作系统定义的限制,您必须使用 large_client_header_buffers 指令。将其设置为您需要的值。
concat_delimiter: string
默认值: 无
上下文: http, server, location
定义两个文件之间的 分隔符。如果配置为 concat_delimiter "\n",当访问 http://example.com/??1.js,2.js 时,会在 1.js 和 2.js 之间插入一个 '\n'。
concat_ignore_file_error: on | off
默认值: off
上下文: http, server, location
是否忽略 404 和 403 错误。
标签发布
Perusio 在 http://github.com/alibaba/nginx-http-concat 上维护一个标记发布,与 Tengine 发布保持同步。请参考那里获取最新的未提交标签。
GitHub 上的其他 tengine 模块
-
footer filter: 允许在请求体的末尾添加一些额外数据(标记或非标记)。对于添加时间戳或其他杂项内容而无需调整应用程序非常实用。
-
http slice: 允许按切片提供文件。某种反向字节范围。对于提供大文件而不占用网络非常有用。
其他构建
-
如开头所述,此模块是
tengineNginx 发行版的一部分。因此,您可能想节省一些工作,直接使用tengine从头构建,而不是官方 Nginx 源代码。 -
如果您想要一个为 Debian 定制的前沿 Nginx 包(来自开发版本),那么您可能会对 Perusio 的 HA/HP debian Nginx 包感兴趣,该包内置对 nginx-http-concat 的支持。有关使用该存储库和使该包在稳定发行版安装中正常工作的说明,请参见 提供的文档。
GitHub
您可以在 nginx-module-concat 的 GitHub 存储库 中找到此模块的其他配置提示和文档。