Перейти к содержанию

concat: Модуль HTTP конкатенации для NGINX

Установка на Debian/Ubuntu

Эти документы относятся к пакету APT nginx-module-concat, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте репозиторий APT, как описано в настройке репозитория APT.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-concat
Показать версии и архитектуры
| Distro   | Suite             | Component   | Architectures   |
|----------|-------------------|-------------|-----------------|
| debian   | bookworm          | main        | amd64, arm64    |
| debian   | bookworm-mainline | main        | amd64, arm64    |
| debian   | trixie            | main        | amd64, arm64    |
| debian   | trixie-mainline   | main        | amd64, arm64    |
| ubuntu   | focal             | main        | amd64, arm64    |
| ubuntu   | focal-mainline    | main        | amd64, arm64    |
| ubuntu   | jammy             | main        | amd64, arm64    |
| ubuntu   | jammy-mainline    | main        | amd64, arm64    |
| ubuntu   | noble             | main        | amd64, arm64    |
| ubuntu   | noble-mainline    | main        | amd64, arm64    |

Введение

Это модуль, который поставляется вместе с 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 или нет.



Пометка релизов

Перусио поддерживает помеченный релиз на http://github.com/alibaba/nginx-http-concat в синхронизации с релизами Tengine. Смотрите там для последних непроиндексированных меток.

Другие модули tengine на Github

  • footer filter: позволяет добавлять дополнительные данные (разметку или нет) в конце тела запроса. Это удобно для таких вещей, как добавление временных меток или других различных вещей без необходимости изменять ваше приложение.

  • http slice: позволяет обслуживать файл кусками. Некий обратный диапазон байт. Полезно для обслуживания больших файлов, не загружая сеть.

Другие сборки

  1. Как упоминалось ранее, этот модуль является частью дистрибутива tengine Nginx. Поэтому вы можете сэкономить время и просто собрать его с нуля, используя tengine, вместо официального исходного кода Nginx.

  2. Если вам нравится пакеты Nginx на острие технологий (из разработческих релизов) для Debian, возможно, вас заинтересует HA/HP debian пакет Nginx от Перусио с встроенной поддержкой nginx-http-concat. Инструкции по использованию репозитория и подключению пакета к стабильной установке распределения предоставлены.