Zahtjevi
Prije nego što počneš
Korak 1 - Instalirajte Acme.sh i pribavite TLS certifikat od Let's Encrypt
Korak 2 – Instalirajte Nginx iz službenog Nginx repozitorija
Korak 3 – Preuzmite i kompajlirajte Brotli izvorni kod
Korak 4 – Konfigurirajte Nginx
Brotli (br) je novi algoritam kompresije otvorenog koda, koji je razvio Google kao alternativu Gzip, Zopfli i Deflate. Formalno je definiran u Internet Engineering Task Force (IETF) kao RFC 7932 . Googleova studija slučaja o Brotliju pokazala je omjer kompresije do 26% manji od trenutnih metoda, uz manje korištenje CPU-a.
Nginx nema službenu podršku, ali postoji modul treće strane koji je razvio Google pod nazivom ngx_brotli koji možemo koristiti za dodavanje podrške za Nginx.
Ovaj vodič će vam pokazati kako dodati podršku za Brotli u Nginx na novoj instanci Ubuntu 18.04 LTS Vultr.
NAPOMENA: Ovaj vodič će se koristiti johndoekao primjer korisnika i example.comkao primjer domene. Zamijenite ih prema svojim imenima.
Zahtjevi
- Ubuntu 18.04 LTS poslužitelj
- Nginx verzija 1.11.5 ili novija
- Ime domene sa
A/ AAAApostavljenim zapisima
- TLS certifikat
Prije nego što počneš
Provjerite verziju Ubuntua.
lsb_release -ds
# Ubuntu 18.04 LTS
Napravite novi non-rootkorisnički račun s sudopristupom i prebacite se na njega.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
NAPOMENA : Zamijenite johndoesvojim korisničkim imenom .
Ažurirajte softver svog operativnog sustava.
sudo apt update && sudo apt upgrade -y
Postavite vremensku zonu.
sudo dpkg-reconfigure tzdata
Instalirajte potrebne alate i pakete za izradu.
sudo apt install -y build-essential git apt-transport-https socat
Korak 1 - Instalirajte Acme.sh i pribavite TLS certifikat od Let's Encrypt
Brotli zahtijeva da postavite i koristite HTTPS. U ovom dijelu ćemo dobiti pouzdani certifikat od Let's Encrypt.
Preuzmite i instalirajte Acme.sh.
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
Provjerite verziju.
acme.sh --version
# v2.8.0
Dobiti RSA i ECDSA certifikate za 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
Nakon pokretanja gornjih naredbi, vaši će certifikati i ključevi biti na sljedećim mjestima:
- RSA:
/etc/letsencrypt/example.com
- ECC/ECDSA:
/etc/letsencrypt/example.com_ecc
Korak 2 – Instalirajte Nginx iz službenog Nginx repozitorija
Preuzmite i instalirajte najnoviji glavni Nginx iz službenog Nginx repo.
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
Provjerite verziju.
sudo nginx -v
# nginx version: nginx/1.15.2
Omogućite i pokrenite Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Korak 3 – Preuzmite i kompajlirajte Brotli izvorni kod
Nakon instalacije Nginxa, moramo izgraditi Brotli modul ( ngx_brotli) kao dinamički Nginx modul. Od verzije Nginxa 1.11.5 moguće je sastaviti pojedinačne dinamičke module bez kompajliranja kompletnog Nginx softvera. U sljedećih nekoliko koraka izgradit ćemo modul Brotli kao dinamičan bez kompajliranja kompletnog Nginxa.
Preuzmite najnoviju verziju glavnog izvornog koda Nginxa i raspakirajte ga.
wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz
NAPOMENA : Vrlo je važno da se brojevi verzija paketa Nginx i izvornog koda Nginx podudaraju. Ako ste instalirali Nginx 1.15.2 iz službenog spremišta Nginxa, tada morate preuzeti istu verziju izvornog koda , u ovom slučaju 1.15.2.
Ukloni nginx-1.15.2.tar.gz.
rm nginx-1.15.2.tar.gz
Klon ngx_brotlis GitHuba.
git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~
Idite do direktorija izvornog koda Nginxa.
cd ~/nginx-1.15.2
Preuzmite potrebne biblioteke.
sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
Sastavite ngx_brotlikao dinamički modul i kopirajte ga u standardni direktorij za Nginx module, /etc/nginx/modules.
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules
Navedite datoteke /etc/nginx/modulesi vidjet ćete ngx_http_brotli_filter_module.soi ngx_http_brotli_static_module.so.
ls /etc/nginx/modules
Postavite dopuštenja na 644za sve .sodatoteke.
sudo chmod 644 /etc/nginx/modules/*.so
Spremni smo konfigurirati podršku za Brotli u Nginxu.
Pokrenite sudo vim /etc/nginx/nginx.confi dodajte sljedeće dvije direktive na vrh datoteke za učitavanje novih Brotli modula.
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Testirajte konfiguraciju.
sudo nginx -t
Napravite korijenski direktorij dokumenta za example.comi kreirajte index.htmls nekim sadržajem u njemu.
sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit
Napravite virtualni host za example.com.
sudo vim /etc/nginx/conf.d/example.com.conf
Popunite ga sljedećom konfiguracijom.
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;
}
Testirajte konfiguraciju.
sudo nginx -t
Ponovno učitajte Nginx.
sudo systemctl reload nginx.service
Posjetite svoju web-lokaciju u svom web-pregledniku i otvorite mrežnu karticu alata za razvojne programere. Vidjet ćete Content-Encoding: bru zaglavljima odgovora. To je pokazatelj da Brotli kompresija radi.

![Dodajte podršku za Brotli u Nginx na Ubuntu 18.04 Dodajte podršku za Brotli u Nginx na Ubuntu 18.04]()
Omogućili ste Brotli kompresiju na svom web poslužitelju.