Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
NGINX_COMPRESSION_TUNING Linux / DevOps

Настройка сжатия контента Brotli и Gzip в Nginx: ускорение веб-сервера

Обновлено: 21.08.2026
  • Медленная загрузка текстовых ресурсов (JS, CSS, HTML, SVG, JSON) у клиентов с мобильным интернетом.
  • Высокий исходящий трафик и перегрузка сетевого интерфейса веб-сервера.
  • Браузер поддерживает заголовок Accept-Encoding: gzip, deflate, br, но получает несжатые ответы (Content-Encoding отсутствует).

1. Настройка стандартного модуля Gzip в /etc/nginx/nginx.conf

В блоке http включите компрессию:

gzip on;
gzip_disable "msie6";

# Оптимальный уровень сжатия (баланс между размером и CPU)
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;

# MIME-типы для компрессии (никогда не сжимайте картинки и видео)
gzip_types
    text/plain
    text/css
    text/javascript
    application/javascript
    application/x-javascript
    application/json
    application/xml
    application/xml+rss
    image/svg+xml;

2. Настройка Brotli (требует ngx_brotli)

Сжатие Brotli обеспечивает на 15-25% большую плотность сжатия по сравнению с Gzip:

brotli on;
brotli_comp_level 4;  # 4-5 для динамики, 11 для статики
brotli_min_length 256;
brotli_types
    text/plain
    text/css
    text/javascript
    application/javascript
    application/json
    image/svg+xml;

3. Проверка работы сжатия через curl

# Тест Gzip
curl -H "Accept-Encoding: gzip" -I https://example.com/main.css | grep -i content-encoding

# Тест Brotli
curl -H "Accept-Encoding: br" -I https://example.com/main.css | grep -i content-encoding

4. Валидация и перезагрузка

nginx -t && systemctl reload nginx
Практический опыт инженера: Никогда не включайте сжатие для бинарных форматов (JPEG, PNG, WebP, ZIP, PDF). Они уже сжаты собственными алгоритмами, и повторный gzip лишь увеличит размер файла и сожжет такты CPU.

Частые вопросы (FAQ)

Почему не стоит ставить gzip_comp_level 9 для динамических запросов?

Степень сжатия между 5 и 9 уровнем дает выигрыш в размере менее 2-3%, но увеличивает нагрузку на процессор (CPU usage) в 4-5 раз, что приводит к деградации RPS при высоких нагрузках.

Зачем нужна директива gzip_vary on?

Она добавляет заголовок 'Vary: Accept-Encoding' в ответ сервера, что сообщает промежуточным кэширующим прокси (CDN) о необходимости хранить две раздельные копии страницы: для клиентов с поддержкой сжатия и без нее.