До основного вмісту

Gzip і Brotli в Nginx: як налаштувати стиснення відповідей

Nginx · 29.09.2026

Навіщо стискати відповіді в Nginx

Стиснення відповідей сервера — найдешевший спосіб пришвидшити сайт. Nginx уміє стискати HTML, CSS та JS «на льоту» за допомогою gzip або ефективнішого алгоритму Brotli. Обидва методи зменшують обсяг трафіку у 3–5 разів для текстових файлів, а браузер розпаковує їх майже миттєво.

Різниця між gzip та Brotli — у ступені стиснення та навантаженні на процесор. Brotli стискає щільніше: економія ще 15–20 % трафіку понад gzip, — але потребує окремого модуля, якого немає у стандартній збірці Nginx.

Як увімкнути gzip у Nginx

Модуль gzip вбудований у Nginx за замовчуванням, тому додатково встановлювати нічого не треба. Додайте блок у файл /etc/nginx/nginx.conf всередині секції http {}:

gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_vary on;
gzip_proxied any;

Після правки перевірте синтаксис командою nginx -t і перечитайте конфігурацію: systemctl reload nginx.

Параметри gzip: що за що відповідає

ПараметрЗначенняПризначення
gzip_comp_level1–9Рівень стиснення: вище — менший розмір, більше навантаження на CPU
gzip_min_lengthбайтиНе стискати файли менші за вказаний розмір
gzip_typesсписок MIMEЯкі типи файлів стискати
gzip_varyon/offДодає заголовок Vary: Accept-Encoding для кешів

Рівень 5–6 — розумний баланс: вище 6 економія мінімальна, а навантаження на процесор помітно зростає.

Як підключити Brotli у Nginx

Стандартна збірка Nginx із репозиторію Ubuntu не містить модуль Brotli. Найпростіше поставити пакет libnginx-mod-http-brotli з репозиторію Nginx або зібрати модуль із вихідного коду разом із --add-module=ngx_brotli.

apt install libnginx-mod-http-brotli

Потім підключіть модулі та налаштуйте стиснення в nginx.conf:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml;

Що стискати не варто

Повторне стиснення вже стиснутих форматів безглузде й витрачає процесорний час даремно. Виключіть зі списків gzip_types і brotli_types такі формати:

  • зображення JPEG, PNG, WebP — вони вже стиснуті всередині формату
  • відео та аудіо: MP4, WebM, MP3
  • архіви: ZIP, GZ, 7Z
  • шрифти WOFF2 — вже використовують вбудоване стиснення Brotli

Як перевірити, що стиснення працює

Надішліть запит із заголовком Accept-Encoding і подивіться на відповідь сервера:

curl -H "Accept-Encoding: gzip, br" -I https://example.com/

У відповіді має з'явитися заголовок Content-Encoding: gzip або Content-Encoding: br. Якщо його немає — перевірте, чи вказаний тип MIME запитаного файлу в gzip_types або brotli_types, а розмір файлу більший за gzip_min_length.

Підсумок

Чек-лист для впровадження стиснення:

  • увімкнути gzip на рівні 5–6 для всіх текстових типів MIME
  • поставити модуль Brotli і увімкнути його поряд із gzip
  • не стискати вже стиснуті формати — зображення, відео, архіви
  • перевірити заголовок Content-Encoding через curl після кожної зміни конфігурації

Після базового налаштування стиснення варто налаштувати кешування відповідей через proxy_cache і перевірити підтримку HTTP/2 та HTTP/3 — разом ці три механізми дають основний приріст швидкості віддачі статики.

← Назад до бази знань Поставити питання підтримці