Nginx: включить gzip-сжатие для текстовых ответов

Категория: Nginx · Язык: Bash · Обновлено:

Чтобы включить gzip в Nginx, добавьте настройки сжатия в блок http, укажите текстовые MIME-типы и проверьте ответ заголовком Accept-Encoding: gzip. Не сжимайте уже сжатые форматы без измерений: это может тратить CPU без заметного выигрыша.

Настройка в блоке http

Текст
http {
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_comp_level 5;
    gzip_types
        text/plain
        text/css
        application/json
        application/javascript
        application/xml
        image/svg+xml;
}

Не добавляйте text/html в gzip_types: Nginx сжимает HTML по умолчанию. Уровень 5 — стартовое значение; подберите его по CPU и задержкам на вашем трафике.

Проверить заголовок ответа

Bash
curl -sSI -H 'Accept-Encoding: gzip' https://example.com/app.css | grep -i content-encoding

Ожидаемый заголовок — Content-Encoding: gzip. Если его нет, проверьте MIME-тип ответа, размер файла, конфигурацию и наличие CDN перед Nginx.

Директива

Назначение

gzip on

Включает gzip

gzip_types

Перечисляет MIME-типы для сжатия

gzip_min_length

Не сжимает слишком маленькие ответы

gzip_vary on

Добавляет Vary: Accept-Encoding для кэшей

gzip_comp_level

Балансирует размер и нагрузку CPU

Нужно ли перезагружать Nginx?

Проверьте синтаксис sudo nginx -t, затем выполните graceful reload. Он применит настройки без принудительного завершения активных соединений.