Для реализации нужен 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 — и всё готово!