Захтеви
Пре него што почнете
Корак 1 - Инсталирајте Ацме.сх и прибавите ТЛС сертификат од Лет'с Енцрипт
Корак 2 – Инсталирајте Нгинк из званичног Нгинк спремишта
Корак 3 – Преузмите и компајлирајте Бротли изворни код
Корак 4 - Конфигуришите Нгинк
Бротли (бр) је нови алгоритам компресије отвореног кода, који је развио Гоогле као алтернативу за Гзип, Зопфли и Дефлате. Формално је дефинисан у Интернет Енгинееринг Таск Форце (ИЕТФ) као РФЦ 7932 . Гоогле-ова студија случаја о Бротлију показала је компресију до 26% мање од тренутних метода, уз мање коришћење ЦПУ-а.
Нгинк нема званичну подршку, али постоји модул треће стране који је развио Гоогле под називом нгк_бротли који можемо користити за додавање подршке за Нгинк.
Овај водич ће вам показати како да додате подршку за Бротли у Нгинк на новој инстанци Убунту 18.04 ЛТС Вултр.
НАПОМЕНА: Овај водич ће се користити johndoeкао пример корисника и example.comкао пример домена. Замените их према својим именима.
Захтеви
- Убунту 18.04 ЛТС сервер
- Нгинк верзија 1.11.5 или новија
- Име домена са
A/ AAAAпостављеним записима
- ТЛС сертификат
Пре него што почнете
Проверите верзију Убунтуа.
lsb_release -ds
# Ubuntu 18.04 LTS
Креирајте нови non-rootкориснички налог са sudoприступом и пређите на њега.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
НАПОМЕНА : Замените johndoeсвојим корисничким именом .
Ажурирајте софтвер свог оперативног система.
sudo apt update && sudo apt upgrade -y
Подесите временску зону.
sudo dpkg-reconfigure tzdata
Инсталирајте потребне алате и пакете за прављење.
sudo apt install -y build-essential git apt-transport-https socat
Корак 1 - Инсталирајте Ацме.сх и прибавите ТЛС сертификат од Лет'с Енцрипт
Бротли захтева да подесите и користите ХТТПС. У овом делу ћемо добити сертификат од поверења од Лет'с Енцрипт.
Преузмите и инсталирајте Ацме.сх.
sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail your_email@example.com
cd ~
source ~/.bashrc
Проверите верзију.
acme.sh --version
# v2.8.0
Набавите РСА и ЕЦДСА сертификате за example.com.
# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail your_email@example.com --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail your_email@example.com --ocsp-must-staple --keylength ec-256
Након покретања горњих команди, ваши сертификати и кључеви ће бити на следећим локацијама:
- РСА:
/etc/letsencrypt/example.com
- ЕЦЦ/ЕЦДСА:
/etc/letsencrypt/example.com_ecc
Корак 2 – Инсталирајте Нгинк из званичног Нгинк спремишта
Преузмите и инсталирајте најновији главни Нгинк из званичног Нгинк репо-а.
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt
Проверите верзију.
sudo nginx -v
# nginx version: nginx/1.15.2
Омогућите и покрените Нгинк.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Корак 3 – Преузмите и компајлирајте Бротли изворни код
Након инсталирања Нгинк-а, морамо да направимо Бротли модул ( ngx_brotli) као динамички Нгинк модул. Од верзије Нгинк-а 1.11.5 могуће је компајлирати појединачне динамичке модуле без компајлирања комплетног Нгинк софтвера. У наредних неколико корака изградићемо модул Бротли као динамичан без компајлирања комплетног Нгинк-а.
Преузмите најновију верзију главног Нгинк изворног кода и распакујте га.
wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz
НАПОМЕНА : Веома је важно да се бројеви верзија Нгинк пакета и Нгинк изворног кода подударају. Ако сте инсталирали Нгинк 1.15.2 из званичног Нгинк спремишта, онда морате преузети исту верзију изворног кода , 1.15.2 у овом случају.
Уклони nginx-1.15.2.tar.gz.
rm nginx-1.15.2.tar.gz
Клон ngx_brotliса ГитХуб-а.
git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~
Идите до директоријума Нгинк изворног кода.
cd ~/nginx-1.15.2
Преузмите потребне библиотеке.
sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
Компилирајте ngx_brotliкао динамички модул и копирајте га у стандардни директоријум за Нгинк модуле, /etc/nginx/modules.
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules
Наведите датотеке /etc/nginx/modulesи видећете 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
Спремни смо да конфигуришемо подршку за Бротли у Нгинк-у.
Покрените sudo vim /etc/nginx/nginx.confи додајте следеће две директиве на врх датотеке да бисте учитали нове Бротли модуле.
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Тестирајте конфигурацију.
sudo nginx -t
Направите основни директоријум документа за example.comи креирајте га index.htmlса неким садржајем у њему.
sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit
Креирајте виртуелни хост за example.com.
sudo vim /etc/nginx/conf.d/example.com.conf
Попуните га следећом конфигурацијом.
server {
listen 80;
server_name example.com; # Replace with your domain name
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com; # Replace with your domain name
root /var/www/example.com; # Replace with your document root
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
brotli on;
brotli_static on;
brotli_types text/plain text/css text/javascript application/javascript text/xml application/xml image/svg+xml application/json;
}
Тестирајте конфигурацију.
sudo nginx -t
Поново учитај Нгинк.
sudo systemctl reload nginx.service
Посетите своју веб локацију у свом веб прегледачу и отворите мрежну картицу са алаткама за програмере. Видећете Content-Encoding: brу заглављима одговора. То је показатељ да Бротли компресија ради.

![Додајте подршку за Бротли у Нгинк на Убунту 18.04 Додајте подршку за Бротли у Нгинк на Убунту 18.04]()
Омогућили сте Бротли компресију на свом веб серверу.