Разработка
Letsrock Pro

Как установить 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 — и всё готово!

{ "author_name": "Letsrock Pro", "author_type": "self", "tags": ["\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u0441\u0430\u0439\u0442\u0430","\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438\u0441\u0430\u0439\u0442\u0430","\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438"], "comments": 4, "likes": 2, "favorites": 7, "is_advertisement": false, "subsite_label": "dev", "id": 203073, "is_wide": true, "is_ugc": true, "date": "Mon, 01 Feb 2021 09:29:53 +0300", "is_special": false }
Создать объявление Отключить рекламу
0
4 комментария
Популярные
По порядку
2

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

Ответить
0

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

Ответить
1

Там же в первом абзаце написано, что модуль за сжатие отвечает, а не за кэширование.

Характеристика в 35 пунктов пейджспид ни о чем не говорит. Что и как стало быстрее? 

Ответить

Комментарии

null