Как включить gzip и Brotli в Nginx: короткое руководство
Настройте gzip штатными средствами Nginx, а Brotli подключите отдельным модулем, если он собран для вашей версии сервера. Проверим конфигурацию и убедимся через curl, что браузер получает сжатый ответ.

За 15–30 минут вы настроите gzip в Nginx и проверите сжатие запросом из командной строки. Brotli потребует отдельного модуля: в стандартную сборку Nginx он не входит, поэтому сначала проверьте, установлен ли модуль именно для вашей версии сервера.
Перед началом
Инструкция рассчитана на Nginx 1.24 и новее. Директивы gzip есть в штатной сборке; Brotli настраивается через сторонний модуль ngx_brotli. Его совместимость зависит от версии Nginx и способа установки. Уточните у администратора сервера или хостинга, доступен ли модуль для вашей сборки. Не загружайте случайный бинарный модуль: несовпадение версии или параметров сборки может помешать запуску Nginx.
- Нужен доступ к конфигурации Nginx и возможность её проверить и перечитать.
- Нужны рабочий домен с HTTPS и адрес страницы или файла, на котором можно проверить ответ.
- Посмотрите версию Nginx командой
nginx -v. На некоторых системах для проверки конфигурации понадобятся права администратора.
Сжатие1 уменьшает объём передаваемого ответа. Оно не уменьшает сами файлы на диске, если вы отдельно не настроили отдачу уже сжатых файлов.
Шаг 1. Включите gzip
Откройте конфигурацию виртуального хоста или общий файл настроек. Директивы ниже должны находиться внутри блока http, server или location. Если файл подключается внутрь http, добавьте их туда, а не создавайте вложенный блок http.
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_types
text/plain
text/css
text/xml
application/javascript
application/json
application/xml
image/svg+xml;
Список gzip_types дополняет тип по умолчанию text/html; повторно добавлять его не нужно. Указывайте типы ответов, которые действительно отдаёт сайт. Не добавляйте сюда JPEG, PNG, WebP, ZIP и другие форматы, которые уже сжаты: повторное сжатие обычно тратит процессор без заметного уменьшения ответа.
- Добавьте настройки. Выберите место, подходящее вашей структуре конфигурации. Проверка: в нужном блоке присутствуют
gzip onи список типов. - Проверьте синтаксис. Выполните
nginx -t, а при необходимости — с правами администратора. Проверка: Nginx сообщает, что синтаксис корректен и проверка конфигурации прошла успешно. - Примените конфигурацию. Выполните
nginx -s reloadс нужными правами или используйте команду перезагрузки, принятую в вашей системе. Проверка: команда завершается без ошибки, сайт продолжает открываться.
Шаг 2. Подключите Brotli, если модуль установлен
В Nginx нет встроенных директив Brotli. Если ваш пакет или хостинг уже предоставляет модуль, проверьте его документацию: имя файла и способ подключения зависят от сборки. Для динамического модуля директива load_module располагается в основном контексте конфигурации, вне блоков http и server. Не копируйте путь к файлу модуля из чужой инструкции — он зависит от системы.
После подключения модуля добавьте настройки внутрь подходящего блока:
brotli on;
brotli_comp_level 5;
brotli_types
text/plain
text/css
text/xml
application/javascript
application/json
application/xml
image/svg+xml;
Эти директивы относятся к ngx_brotli, а не к штатному Nginx. Если проверка конфигурации сообщает unknown directive "brotli", модуль не подключён или в нём нет этой директивы. Удалите настройки Brotli либо установите совместимый модуль по инструкции поставщика сборки; не пытайтесь исправить ошибку изменением уровня сжатия.
- Уточните способ подключения. Узнайте у хостинга или сопровождающего сборку, какой модуль Brotli установлен и где лежит его файл. Проверка: есть конкретная инструкция для вашей версии Nginx.
- Подключите модуль и добавьте директивы. Используйте только путь и синтаксис из этой инструкции. Проверка:
nginx -tпроходит без сообщений об неизвестных директивах. - Перечитайте конфигурацию. Примените её способом, предусмотренным системой. Проверка: запрос сайта по HTTPS возвращает обычный ответ, без ошибок сервера.
Шаг 3. Проверьте ответ сервера
Выполните запрос, указав реальный адрес сайта и путь к странице:
curl -sSI -H 'Accept-Encoding: br, gzip' https://example.com/
В заголовках ответа ищите Content-Encoding: br или Content-Encoding: gzip. Сервер может выбрать один поддерживаемый формат; отсутствие обоих означает, что именно этот ответ не сжали. Проверьте также запрос к CSS или JavaScript: HTML мог прийти из кеша, прокси или другого блока конфигурации.
Если хотите понять, какой формат сервер отдаёт отдельно, отправьте два запроса, меняя заголовок Accept-Encoding на gzip и br. Смотрите именно на Content-Encoding, а не только на размер, показанный браузером. Для сравнения размеров используйте один и тот же URL, способ запроса и состояние кеша.
Если не получилось
unknown directive "brotli". Модуль недоступен в активной сборке или не загружен. Уберите Brotli-директивы либо получите инструкцию для установленного модуля.module ... is not binary compatible. Файл модуля собран для другой версии или конфигурации Nginx. Нужна совместимая сборка; не перезапускайте сервер с неподходящим модулем.- Нет
Content-Encoding. Проверьте MIME-тип ответа, заголовок запросаAccept-Encoding, активный виртуальный хост и то, что конфигурация перечитана. Ответ корочеgzip_min_lengthтакже может не сжиматься gzip. - Статус 304 или неожиданный ответ прокси. Повторите проверку обычным GET-запросом и сравните ответ напрямую с Nginx, если такая проверка доступна. Промежуточный кеш может отдавать собственную версию ответа.
- После изменения сайт не открывается. Сначала проверьте конфигурацию командой
nginx -tи изучите журнал ошибок. Не применяйте изменения, пока проверка не проходит.
Что учитывать на сервере
Уровень сжатия — компромисс между размером ответа и нагрузкой на процессор. Значение 5 — исходная настройка, а не универсальный оптимум. Сравните её с меньшим уровнем на типичных страницах и файлах, одновременно наблюдая за временем ответа и загрузкой CPU. Результат зависит от содержимого, размера ответов, числа запросов и кеширования; универсального процента экономии нет.
Включённые директивы ещё не доказывают, что посетитель получает сжатый ответ. Проверяйте заголовок Content-Encoding для реального URL и следите, какой сервер или кеш сформировал ответ.
Для больших статических файлов можно отдельно рассмотреть отдачу заранее сжатых копий, но это другой режим работы: он требует подготовки файлов и проверки поддержки соответствующей директивы в вашей сборке. Не смешивайте его с проверкой динамического сжатия из этой инструкции.
Что делать дальше
Проверьте главную страницу, крупный CSS и JavaScript, а затем повторите запрос после включения кеша перед Nginx, если он есть. Зафиксируйте тип ответа, его размер, время ответа и загрузку процессора до и после настройки. Если Brotli недоступен в вашей сборке, оставьте штатный gzip: не устанавливайте сторонний модуль на рабочий сервер без проверки совместимости и плана отката.
1 MIME-тип — обозначение формата ответа, например text/css для таблицы стилей; Nginx использует его, в частности, при выборе типов для сжатия.
Редактор изображений: Убрать лишнее, заменить фон, добавить объект, расширить кадр — на вашем изображении.
Спросить за 20 ₽Источники: Модуль ngx_http_gzip_module — документация Nginx, ngx_brotli — репозиторий проекта
Частые вопросы
Можно ли включить Brotli без установки модуля?
Нужно ли настраивать gzip и Brotli одновременно?
Почему curl показывает ответ без сжатия?
Какое значение gzip_comp_level выбрать?
Безопасно ли подключить найденный в интернете модуль Brotli?
Что делать, если после настройки Nginx не запускается?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.