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

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

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

Linux / DevOps

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

Обновлено: 27.08.2026 · Официальная документация ↗

Почему сайты загружаются медленно

Современные веб-приложения передают браузеру мегабайты исходного кода JavaScript, CSS-стилей и HTML-разметки. Без включенного сжатия пользователи с мобильным интернетом ждут загрузки страниц по 5–10 секунд, что приводит к уходу клиентов и снижению позиций в поисковой выдаче Google и Яндекс (показатели Core Web Vitals).

  • Инструмент Google PageSpeed Insights выдает рекомендацию: «Включите сжатие текста».
  • В сетевой вкладке браузера размер файла bundle.js равен 2.5 МБ вместо 400 КБ.
  • В заголовках ответов сервера отсутствует заголовок Content-Encoding: gzip или br.

Включение и правильная настройка Gzip в Nginx

  1. Шаг 1. Открываем главный конфигурационный файл Nginx:
    sudo nano /etc/nginx/nginx.conf
  2. Шаг 2. Находим и активируем блок настроек Gzip:

    Найдите секцию http { ... } и приведите директивы сжатия к следующему виду:

    ##
    # Gzip Settings
    ##
    gzip on;
    gzip_disable "msie6";
    
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_min_length 256;
    
    gzip_types
        text/plain
        text/css
        text/javascript
        text/xml
        application/javascript
        application/x-javascript
        application/json
        application/xml
        application/rss+xml
        image/svg+xml;
  3. Шаг 3. Проверяем синтаксис и перезагружаем Nginx:
    sudo nginx -t && sudo systemctl reload nginx
  4. Шаг 4. Проверяем работу сжатия через терминал:
    curl -H "Accept-Encoding: gzip" -I http://ВАШ_САЙТ.com

    В ответе должна появиться строчка: Content-Encoding: gzip.

Почему нельзя сжимать JPG, PNG и MP4: Никогда не добавляйте бинарные форматы (картинки, видео, PDF) в gzip_types. Они уже сжаты собственными алгоритмами. Повторное сжатие только перегрузит процессор сервера без уменьшения размера файлов.

💡 Практика специалистов: Включение сжатия Gzip в Nginx в сочетании с правильным кэшированием статики (expires max) — это самое быстрое и бесплатное действие, которое сокращает объем трафика сервера на 60-70% за 3 минуты настройки.

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

Какой уровень сжатия gzip_comp_level выбрать?

Оптимальное значение — от 4 до 6. Значения 7–9 дают выигрыш в размере всего 1–2%, но при этом нагружают процессор сервера в несколько раз сильнее.

Что эффективнее: Gzip или Brotli?

Алгоритм Brotli (разработка Google) сжимает текстовые файлы на 15–25% эффективнее Gzip. Если модуль Brotli поддерживается вашей сборкой Nginx, рекомендуется использовать его в связке с fallback на Gzip.

Что делает директива gzip_min_length 256?

Она запрещает сжимать файлы размером менее 256 байт, так как накладные расходы на сжатие крошечных файлов делают их размер только больше.

Влияет ли включение сжатия на нагрузку процессора?

На современных многоядерных процессорах влияние gzip при уровне сжатия 5 практически незаметно (менее 1–3% CPU).

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