Настройка зависит от уровня, который отдаёт публичный ответ

Как безопасно включить Gzip или Brotli

Сначала определите сервер, CDN и фактические MIME-типы. Затем включите согласованное сжатие только для подходящих ответов, проверьте Vary, версию без сжатия и нагрузку.

Порядок настройки HTTP-сжатия от клиента через CDN к серверу
Правило должно находиться на том уровне, который формирует окончательные заголовки.

Самый безопасный путь

Сообщение хостингу или разработчику

«Включите согласованное Gzip и доступный Brotli для HTML, CSS, JavaScript, JSON, XML и SVG на публичном уровне доставки. Не сжимайте повторно изображения, видео и архивы. Проверьте Content-Encoding, Vary: Accept-Encoding, Content-Type, ответы с Accept-Encoding и identity, CDN-кеш и размер до/после».

Сохраните конфигурацию virtual host/.htaccess, экспорт CDN и текущие заголовки контрольных URL. Убедитесь, что есть команда проверки конфигурации и быстрый откат до перезагрузки сервиса.

Пошаговая настройка

  1. Проверьте DNS и заголовки, чтобы понять, отвечает ли origin напрямую или через CDN/reverse proxy.
  2. Соберите HTML, CSS, JS, JSON и SVG с корректными Content-Type; отдельно отметьте маленькие и персонализированные ответы.
  3. Выберите один управляющий уровень. Не добавляйте противоречивые правила одновременно в приложение, Apache, Nginx и CDN.
  4. Включите Gzip для текстовых MIME-типов с разумным минимальным размером и умеренным уровнем CPU.
  5. Если CDN/сервер поддерживает Brotli, включите его с Gzip-fallback и не предполагайте поддержку только по панели.
  6. Настройте Vary: Accept-Encoding и очистите затронутый кеш, чтобы варианты не смешались.
  7. Проверьте ответ с br, gzip, только gzip и identity; сравните содержимое и размер.
  8. Просмотрите CPU/latency после выпуска и повторите тест для desktop/mobile и динамического HTML.

Примеры конфигурации

Nginx

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript
           application/json application/xml image/svg+xml;

После правки выполните nginx -t, затем безопасную reload-команду вашей системы.

Apache / .htaccess

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css
  AddOutputFilterByType DEFLATE application/javascript application/json
  AddOutputFilterByType DEFLATE application/xml image/svg+xml
</IfModule>

Модуль и разрешение директив должен подтвердить хостинг. Brotli настраивается отдельно, если доступен.

Риски и откат

Что проверить при сбое
СимптомВероятная причинаДействие
Браузер показывает повреждённый текстДвойное сжатие или неверный заголовокОтключить дублирующий фильтр и очистить кеш
Gzip есть на origin, но нет публичноCDN меняет или кеширует ответИсправить edge-настройку и purge
Вырос CPU/TTFBСлишком высокий уровень или мелкие ответыСнизить уровень, добавить порог/предсжатие
Смешиваются вариантыНет корректного VaryДобавить заголовок и очистить общий кеш

Для отката восстановите конфигурацию, проверьте её синтаксис, перезагрузите сервис и очистите только затронутый кеш. Для ответов с секретами, отражаемым вводом и TLS оцените риск BREACH отдельно. После выпуска выполните независимую проверку.