Как установить brotli и увеличить скорость загрузки сайта на nginx

Один из способов ускорить работу сайта — кэширование данных. Один из эффективных методов сжатия — установка модуля brotli, разработанного Google.

Для установки данного модуля нужно пересобирать веб-сервер nginx, на котором расположен сайт. Но это долгий процесс и может помешать работе уже существующего сайта. Поэтому мы нашли способ, как этого избежать.

Его мы использовали, например, на проекте МонакоМода. Это позволило ускорить загрузку сайта на 35 пунктов по Google Pagespeed без рисков для стабильности.

Для реализации нужен root-доступ к серверу сайта, а сам сайт должен быть с защищенным соединением SSL. Если это есть, нужно выполнить следующие шаги:

Шаг 1 - Установка исходников nginx

Прежде чем начать, надо обновить сам сервер, все его модули, а также установить дополнительные библиотеки:

sudo apt update

sudo apt install -y build-essential git apt-transport-https socat

Смотрим свою версию nginx:

nginx -v

После обновлений и проверок, можно скачивать исходники:

wget https://nginx.org/download/nginx-1.14.1.tar.gz && tar zxvf nginx-1.14.1.tar.gz

rm nginx-1.14.1.tar.gz

Шаг 2 - Скачивание модуля brotli и перенос его на боевой nginx

Скачиваем модуль:

git clone https://github.com/eustas/ngx_brotli.git

cd ngx_brotli && git submodule update --init && cd ~

Переходим в папку с исходниками nginx и добавляем модули:

cd ~/nginx-1.14.1

sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

Затем скомпилируем модуль в этой же папке:

./configure --with-compat --add-dynamic-module=../ngx_brotli

make modules

sudo cp objs/*.so /etc/nginx/modules

"/etc/nginx/modules" - это адрес папке, где находятся модули боевого nginx, обычно он всегда такой, но лучше пред этим проверить

После таких махинаций, смотрим что все файлы появились в папке (ngx_http_brotli_filter_module.so, ngx_http_brotli_static_module.so):

ls /etc/nginx/modules

Устанавливаем разрешение 644 для всех файлов .so:

sudo chmod 644 /etc/nginx/modules/*.so

Шаг 3 - Настройка боевого nginx

Переходим в папку самого nginx и находим конфиг /etc/nginx/nginx.conf, в нем мы добавляем вот такие строки:

load_module modules/ngx_http_brotli_filter_module.so;

load_module modules/ngx_http_brotli_static_module.so;

Это позволяет нам подключить сам модуль. После этого проверяем nginx на ошибки sudo nginx -t, если все нормально, то мы настроили все верно.

Дальше заходим в конфиг нужного сайта и активируем brotli, при этом убираем gzip, больше он нам не нужен.

brotli on;

brotli_static on;

brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;

После этого перезагружаем nginx — и всё готово!

44
14 комментариев

написали бы хоть кратко за счет чего улучшение 

3
Ответить

Добрый день!
В первом абзаце указано — за счет кэширования данных :)

Ответить

Рекомендуется оставить gzip включенным после установки модуля сжатия данных Brotli.Хотя модули сжатия данных могут сжимать данные более эффективно, чем gzip, некоторые браузеры и клиенты могут не поддерживать эти модули. Поэтому, оставляя gzip включенным, вы можете обеспечить совместимость с более широким диапазоном клиентов и браузеров.Кроме того, gzip может быть полезен для сжатия небольших файлов, которые могут не оправдывать использование модулей сжатия данных. Например, для сжатия файлов CSS и JavaScript gzip может быть более эффективным, чем модули сжатия данных.Таким образом, рекомендуется оставить gzip включенным после установки модуля сжатия данных, чтобы обеспечить совместимость с более широким диапазоном клиентов и браузеров, а также для сжатия небольших файлов.

1
Ответить

Комментарий недоступен

Ответить

https://docs.nginx.com/nginx/admin-guide/dynamic-modules/brotli/ и смысл после этого самому что-то пересобирать?

Ответить

вас не смутила приписочка plus? (((: а ценник вас не смущает?

Ответить