Настройка gzip-сжатия в Nginx на Debian Jessie
Ключевые варианты запроса
- настройка gzip nginx
- включить gzip в nginx на debian
- оптимизация передачи контента nginx
- gzip vs brotli
1 Вступительная заметка
Предполагается, что у вас уже есть рабочая установка Nginx на Debian (Jessie). Если у вас ещё нет веб‑стека, сначала установите и настройте Nginx и PHP‑FPM/БД по инструкции для LEMP на Debian 8.
Важно: gzip сжатие применяется только к текстовым типам содержимого. Бинарные форматы (изображения, видео, архивы) обычно уже сжаты и дополнительное gzip‑сжатие бесполезно.
2 Конфигурация HttpGzipModule
Откройте файл /etc/nginx/nginx.conf:
nano /etc/nginx/nginx.confВ секции http {} вы, возможно, уже найдёте включённый gzip:
[...]
http {
[...]
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
[...]
}
[...]Объяснение ключевых директив:
gzip on; — включает gzip‑сжатие.
gzip_disable “MSIE [1-6]\.(?!.*SV1)”; — отключает gzip для старых версий Internet Explorer, которые не корректно поддерживают сжатый ответ.
Далее — полезные дополнительные настройки (см. документацию модуля на официальном сайте nginx):
gzip_http_version 1.1; — включить gzip для HTTP/1.1 (HTTP/1.0 без Content-Length сделает невозможным Keep-Alive).
gzip_vary on; — добавляет заголовок Vary: Accept-Encoding, чтобы прокси корректно кэшировали и отдавали и сжатую, и несжатую версии.
gzip_comp_level 6; — уровень сжатия от 1 (быстрый, менее сжатый) до 9 (медленный, сильно сжатый). 6 — разумный компромисс.
gzip_proxied any; — включать сжатие для запросов, пришедших через прокси.
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js; — список MIME‑типов, для которых включается сжатие (text/html всегда сжимается).
gzip_buffers 16 8k; — число и размер буферов для сжатия. Увеличение помогает при больших JS/CSS файлах.
Пример финальной секции http:
[...]
http {
[...]
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
[...]
}
[...]После правки конфигурации перезагрузите Nginx:
service nginx reloadВажно
- Не включайте gzip для бинарных типов (image/, audio/ и т. п.). Это бесполезно и может лишь увеличить нагрузку.
Примечание
- Уровень gzip_comp_level выше 6 даёт более сильное сжатие, но заметно повышает CPU‑нагрузку. На слабых серверах лучше использовать 4–6.
3 Тестирование
Проверить работу можно в инструментах разработчика браузера (Firefox/Chrome): откройте статическую HTML-страницу, посмотрите HTTP заголовки. Клиент должен отправлять Accept-Encoding: gzip,deflate, а сервер — отвечать Content-Encoding: gzip и Vary: Accept-Encoding.
Пример — заголовки в DevTools:

Используйте curl для автоматической проверки в терминале:
curl -I -H "Accept-Encoding: gzip" https://example.com/somepage.htmlВ ответе должна быть строка Content-Encoding: gzip.
Критерии приёмки
- Запрос с Accept-Encoding: gzip получает Content-Encoding: gzip.
- Vary: Accept-Encoding присутствует в ответе.
- Размер текстовых статических файлов существенно уменьшился по сравнению с несжатой версией.
4 Практические советы по производительности
Баланс CPU и сети: на серверах с ограниченным CPU и большим трафиком имеет смысл поручить сжатие фронтенд-прокси (например, CDN) или использовать более лёгкое сжатие (уровень 1–3).
Буферизация: если у вас много больших JS/CSS, увеличьте gzip_buffers и проконтролируйте расход памяти.
Keep-Alive и HTTP/1.0: gzip_http_version 1.1 гарантирует корректную работу с Keep-Alive.
Кеширование: убедитесь, что прокси/кеши (Varnish, CDN) корректно различают compressed/uncompressed версии — для этого и нужен Vary: Accept-Encoding.
Мониторинг: отслеживайте CPU и задержки после включения, чтобы убедиться, что влияние на сервер приемлемо.
5 Альтернативы и когда gzip не подходит
Brotli: современный алгоритм сжатия (br) даёт лучшее сжатие для текстовых ресурсов при умеренных накладных расходах. Поддерживается новыми браузерами и может быть использован совместно с gzip (сервер выбирает в зависимости от Accept-Encoding). Минусы: медленнее на этапе сжатия, не во всех версиях Nginx доступен без модулей.
CDN: если вы используете CDN, часто имеет смысл делегировать сжатие CDN, чтобы снять нагрузку с origin-сервера.
Контрпример/когда gzip не работает
- Сжатие не даст выигрыша для уже сжатых форматов (.jpg, .png, .mp4, .zip).
- Старые прокси, нарушающие Vary, могут отдать сжатый контент браузеру, который не умеет его распаковать — включение gzip_vary решает эту проблему.
6 Отладка и распространённые проблемы
- Нету Content-Encoding: gzip в ответе
- Проверьте, что Accept-Encoding действительно отправлен клиентом.
- Убедитесь, что MIME‑тип ответа входит в gzip_types или является text/html.
- Проверьте, что обработка запроса не идёт через сторонний модуль, который отключает gzip для данного location.
- Клиенты получают сжатый контент и не могут его распаковать
- Проверьте Vary: Accept-Encoding и gzip_disable директивы для устаревших браузеров.
- Резкое увеличение CPU
- Понизьте gzip_comp_level; рассмотрите использование CDN или внешнего прокси для сжатия.
7 Контрольный чеклист перед продакшен‑деплоем
- Включён gzip в общей секции http или в нужных server/location.
- Установлен разумный gzip_comp_level (4–6).
- Настроены gzip_types для всех текстовых форматов, используемых на сайте.
- Добавлен gzip_vary on; для корректной работы кэшей.
- Протестировано curl и в браузере (DevTools).
- Мониторинг CPU и времени отклика перед/после включения.
8 Быстрый рецепт (mini‑methodology)
- Внесите изменения в /etc/nginx/nginx.conf (секция http).
- Примените: service nginx reload.
- Проверка: curl -I -H “Accept-Encoding: gzip”
. - Наблюдайте метрики 24–48 часов.
- При необходимости скорректируйте gzip_comp_level / gzip_buffers.
9 Ссылки
- nginx HttpGzipModule: http://nginx.org/en/docs/http/ngx_http_gzip_module.html
- Debian: http://www.debian.org/
Итог
Gzip — низкозатратный способ значительно сократить объём текста, передаваемого клиентам. При разумных настройках и внимательном мониторинге он повышает скорость загрузки страниц и уменьшает сетевой трафик. Для максимально возможного сжатия и современной поддержки рассмотрите brotli на фронте или использование CDN.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента