Подпишись
и получай крутые статьи первым
Выберите рассылку
Нет, спасибо
Подпишись
23.12.2020 5 мин

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

Александр Кузнецов

Backend

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

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

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

Авторизация через смс с привязкой к корпоративным номерам

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

Шаг 1 - Установка исходников nginx
sudo apt updatesudo apt install -y build-essential git apt-transport-httpssocat

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

nginx -v

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

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

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

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

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

git clone https://github.com/eustas/ngx_brotli.gitcd ngx_brotli && git submodule update --init && cd ~

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

cd ~/nginx-1.14.1sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-devopenssl libssl-dev

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

./configure --with-compat --add-dynamic=../ngx_brotlimake modulessudo 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 — и всё готово!

Обратная связь
Напишите нам, и мы с вами свяжемся

Возможно, вам понравится:

Let's Rock, 2012-2020. Разработка, поддержка и развитие интернет-магазинов. Золотой партнер 1С-Битрикс и активный член авторитетного клуба e-Commerce Сибирь.