Статья обновлена 2 марта, 2022
Nginx на Centos 7 и панелью управления VestaCP
В статье расскажем, как установить и настроить Brotli в Nginx. Дана пошаговая рабочая инструкция. Установка и настройка будет осуществляется на Centos 7 под управлением панелью VestaCP. Немного истории и преимуществ сжатия Brotli.
Brotli разработан Google как альтернатива Gzip, Zopfli и Deflate, но можно сказать, что это улучшение.
Исследование Гугл показало, что степень сжатия Brotli более чем на 25% меньше, чем у текущих методов, при меньшем использовании ЦП.
В настоящее время Nginx не имеет официальной поддержки Brotli.
Но Google разработал сторонние модули на github под названием ngx_brotli, которые вы можете использовать на Nginx.
Согласно описаниям проекта Brotli Github, Brotli представляет собой универсальный алгоритм сжатия без потерь, который сжимает данные, используя комбинацию современного варианта алгоритма LZ77, кодирования Хаффмана и контекстного моделирования 2-го порядка, с коэффициентом сжатия, сравнимым с лучшим доступным в настоящее время общим алгоритмом целевых методов сжатия.
Он похож по скорости на deflate, но предлагает более плотное сжатие.
Как установить модуль Brotli в Nginx
Заходим в терминал. Выполняем три команды по очереди. Нажимаем Yes, когда спросят.
yum groupinstall "Development Tools" && yum install rpmdevtools yum-utils wget git
yum install gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel
yum install lmdb lmdb-devel libxml2 libxml2-devel ssdeep ssdeep-devel lua lua-devel
Выполнять всю установку и компиляцию будем в папке /usr/src (можно взять другую папку на Ваше усмотрение).
Переходим в терминале в выбранную папку, выполнив команду:
cd /usr/src
Далее необходимо клонировать ngx_brotli с Github, официальный дистрибутив — https://github.com/google/ngx_brotli
Для этого выполняем в терминале следующие три команды по очередно (установка и компиляция brotli):
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
Следующим действием, необходимо проверить свою версию Nginx, вводим команду:
nginx -V
Теперь вам нужно загрузить исходный код Nginx, в зависимости от вашей версии Nginx.
Опять возвращаемся в каталог — вводим команду в терминале:
cd /usr/src
Скачиваем именно свою версию nginx (в примере показана версия nginx-1.20.2, если у Вас другая версия, то Вам необходимо заменить все цифры на свои).
wget http://nginx.org/download/nginx-1.20.2.tar.gz
Распаковываем скаченный архив следующей командой:
tar zxvf nginx-1.20.2.tar.gz
Переходим в папку со скаченной и распакованной версией Nginx:
cd nginx-1.20.2
Далее необходимо скомпилировать Nginx с новым модулем сжатия brotli такой командой:
./configure --with-compat --add-dynamic-module=../ngx_brotli
По окончании выполнения процесса компиляции вводим следующую команду:
make modules
И после окончания операции по очереди вводим следующие 4 команды:
cp objs/ngx_http_brotli_static_module.so /etc/nginx/modules
cp objs/ngx_http_brotli_filter_module.so /etc/nginx/modules
chmod 644 /etc/nginx/modules/ngx_http_brotli_static_module.so
chmod 644 /etc/nginx/modules/ngx_http_brotli_filter_module.so
Настройка модуля сжатия Brotli в Nginx
Чтобы загрузить модули Brotli на Nginx, отредактируйте файл /etc/nginx/nginx.conf и добавьте этот код в начало конфигурации.
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
И в Вашем блоке http добавьте этот код (перед gzip on;):
brotli on;
brotli_static on; # for static compression, explained later
brotli_comp_level 6; # this setting can vary from 1-11
brotli_types text/xml image/svg+xml application/x-font-ttf image/vnd.microsoft.icon application/x-font-opentype application/json font/eot application/vnd.ms-fontobject application/javascript font/otf application/xml application/xhtml+xml text/javascript application/x-javascript text/plain application/x-font-truetype application/xml+rss image/x-icon font/opentype text/css image/x-win-bitmap;
gzip on;
Проверьте конфигурацию Nginx с помощью команды:
nginx -t
Если выдаст в ответ:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Значит Вы все сделали правильно. Теперь перезапустите Nginx и для проверки подключения модуля введите такой запрос ЗАМЕНИВ https://mysaita.com на свой домен:
curl -s -I -H 'Accept-Encoding: br,gzip,deflate' https://mysaita.com
Должен быть примерно такой ответ:
Вы также можете проверить онлайн и сравнить сжатие Brotli и Gzip на сайте — https://tools.paulcalvano.com/compression.php
Надеюсь, Вам помогла наша инструкция — Как установить и настроить Brotli в Nginx.
Понравился материал? Подписывайтесь на наш блог.
Только полезная информация и реальные кейсы