concat: HTTP Concatenation module для NGINX
Установка
Вы можете установить этот модуль в любом дистрибутиве на базе 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, выпущенный 15 января 2020 года.
Введение
Это модуль, который распространяется с
tengine, который является дистрибутивом
Nginx, используемым сайтом электронной коммерции/аукциона
Taobao.com. Этот дистрибутив
содержит некоторые модули, которые новы на сцене Nginx. Модуль
ngx_http_concat является одним из них.
Модуль вдохновлен
modconcat от Apache. Он следует тому же
шаблону для включения конкатенации. Он использует два ?, вот так:
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. Это применимо
к любому другому типу файлов, которые вы решите конкатенировать, добавив
соответствующий MIME тип через concat_types.
concat_max_files number
по умолчанию: concat_max_files 10
контекст: http, server, location
Определяет максимальное количество файлов, которые могут быть конкатенированы в заданном контексте. Обратите внимание, что данный URI не может превышать размер страницы вашей платформы. В Linux вы можете получить размер страницы, выполнив:
getconf PAGESIZE
Обычно это 4k. Поэтому, если вы попытаетесь конкатенировать много файлов вместе в
заданном контексте, вы можете столкнуться с этой преградой. Чтобы преодолеть это
ограничение, установленное ОС, вы должны использовать
large_client_header_buffers
директиву. Установите ее на нужное вам значение.
concat_delimiter: строка
по умолчанию: НЕТ
контекст: http, server, location
Определяет разделитель между двумя файлами. Если конфигурация concat_delimiter "\n", то '\n' будет вставлен между 1.js и 2.js при посещении http://example.com/??1.js,2.js
concat_ignore_file_error: on | off
по умолчанию: off
контекст: http, server, location
Игнорировать ли 404 и 403 или нет.
Тегирование релизов
Perusio поддерживает тегированный релиз на http://github.com/alibaba/nginx-http-concat в синхронизации с релизами Tengine. Смотрите там для получения последних незафиксированных тегов.
Другие модули tengine на GitHub
-
footer filter: позволяет добавлять дополнительные данные (разметку или нет) в конце тела запроса. Это удобно для таких вещей, как добавление временных меток или других различных данных без необходимости изменять ваше приложение.
-
http slice: позволяет обслуживать файл по частям. Что-то вроде обратного диапазона байтов. Полезно для обслуживания больших файлов, не загружая сеть.
Другие сборки
-
Как упоминалось в начале, этот модуль является частью
tengineдистрибутива Nginx. Поэтому вы можете сэкономить себе время и просто собрать его с нуля, используяtengineвместо официального исходного кода Nginx. -
Если вам интересен пакет Nginx на переднем крае (из релизов для разработчиков) для Debian, то вам может быть интересен пакет Perusio's HA/HP debian Nginx с встроенной поддержкой nginx-http-concat. Инструкции по использованию репозитория и интеграции пакета в стабильную установку дистрибутива предоставлены здесь.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub nginx-module-concat.