Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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) о необходимости хранить две раздельные копии страницы: для клиентов с поддержкой сжатия и без нее.

Полезные материалы
Рекомендуем