К основному содержимому

Gzip и Brotli в Nginx: как настроить сжатие ответов

Nginx · 29.09.2026

Зачем сжимать ответы в Nginx

Сжатие ответов сервера — самый дешёвый способ ускорить сайт. Nginx умеет сжимать HTML, CSS и JS «на лету» с помощью gzip или более эффективного алгоритма Brotli. Оба метода уменьшают объём трафика в 3–5 раз для текстовых файлов, а браузер распаковывает их почти мгновенно.

Разница между gzip и Brotli — в степени сжатия и нагрузке на процессор. Brotli сжимает плотнее: экономия ещё 15–20 % трафика сверх gzip, — но требует отдельного модуля, которого нет в стандартной сборке Nginx.

Как включить gzip в Nginx

Модуль gzip встроен в Nginx по умолчанию, поэтому дополнительно ставить ничего не нужно. Добавьте блок в файл /etc/nginx/nginx.conf внутри секции http {}:

gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_vary on;
gzip_proxied any;

После правки проверьте синтаксис командой nginx -t и перечитайте конфигурацию: systemctl reload nginx.

Параметры gzip: что за что отвечает

ПараметрЗначениеНазначение
gzip_comp_level1–9Уровень сжатия: выше — меньше размер, больше нагрузка на CPU
gzip_min_lengthбайтыНе сжимать файлы меньше указанного размера
gzip_typesсписок MIMEКакие типы файлов сжимать
gzip_varyon/offДобавляет заголовок Vary: Accept-Encoding для кэшей

Уровень 5–6 — разумный баланс: выше 6 экономия минимальна, а нагрузка на процессор растёт заметно.

Как подключить Brotli в Nginx

Стандартная сборка Nginx из репозитория Ubuntu не содержит модуль Brotli. Проще всего поставить пакет libnginx-mod-http-brotli из репозитория Nginx или собрать модуль из исходников вместе с --add-module=ngx_brotli.

apt install libnginx-mod-http-brotli

Затем подключите модули и настройте сжатие в nginx.conf:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml;

Что сжимать не стоит

Повторное сжатие уже сжатых форматов бессмысленно и тратит процессорное время впустую. Исключите из списков gzip_types и brotli_types такие форматы:

  • изображения JPEG, PNG, WebP — они уже сжаты внутри формата
  • видео и аудио: MP4, WebM, MP3
  • архивы: ZIP, GZ, 7Z
  • шрифты WOFF2 — уже используют встроенное сжатие Brotli

Как проверить, что сжатие работает

Запросите страницу с заголовком Accept-Encoding и посмотрите на ответ сервера:

curl -H "Accept-Encoding: gzip, br" -I https://example.com/

В ответе должен появиться заголовок Content-Encoding: gzip или Content-Encoding: br. Если его нет — проверьте, что MIME-тип запрошенного файла указан в gzip_types или brotli_types, а размер файла больше gzip_min_length.

Итог

Чек-лист для внедрения сжатия:

  • включить gzip на уровне 5–6 для всех текстовых MIME-типов
  • поставить модуль Brotli и включить его рядом с gzip
  • не сжимать уже сжатые форматы — изображения, видео, архивы
  • проверить заголовок Content-Encoding через curl после каждого изменения конфигурации

После базовой настройки сжатия имеет смысл настроить кэширование ответов через proxy_cache и проверить поддержку HTTP/2 и HTTP/3 — вместе эти три механизма дают основной прирост скорости отдачи статики.

← Назад в базу знаний Задать вопрос поддержке