Krav
Før du begynner
Trinn 1 - Installer Acme.sh og skaff et TLS-sertifikat fra Let's Encrypt
Trinn 2 – Installer Nginx fra det offisielle Nginx-depotet
Trinn 3 – Last ned og kompiler Brotli-kildekoden
Trinn 4 – Konfigurer Nginx
Brotli (br) er en ny åpen kildekode-komprimeringsalgoritme, utviklet av Google som et alternativ til Gzip, Zopfli og Deflate. Det er formelt definert i Internet Engineering Task Force (IETF) som RFC 7932 . Googles casestudie på Brotli har vist kompresjonsforhold på opptil 26 % mindre enn dagens metoder, med mindre CPU-bruk.
Nginx har ikke offisiell støtte, men det er en tredjepartsmodul utviklet av Google kalt ngx_brotli som vi kan bruke for å legge til støtte til Nginx.
Denne guiden viser deg hvordan du legger til Brotli-støtte til Nginx på en fersk Ubuntu 18.04 LTS Vultr-forekomst.
MERK: Denne veiledningen vil brukes johndoesom eksempelbruker og example.comeksempeldomene. Erstatt dem i henhold til navnene dine.
Krav
- Ubuntu 18.04 LTS-server
- Nginx versjon 1.11.5 eller nyere
- Domenenavn med
A/ AAAAposter satt opp
- TLS-sertifikat
Før du begynner
Sjekk Ubuntu-versjonen.
lsb_release -ds
# Ubuntu 18.04 LTS
Opprett en ny non-rootbrukerkonto med sudotilgang og bytt til den.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
MERK : Erstatt johndoemed brukernavnet ditt .
Oppdater operativsystemets programvare.
sudo apt update && sudo apt upgrade -y
Sett opp tidssonen.
sudo dpkg-reconfigure tzdata
Installer nødvendige byggeverktøy og pakker.
sudo apt install -y build-essential git apt-transport-https socat
Trinn 1 - Installer Acme.sh og skaff et TLS-sertifikat fra Let's Encrypt
Brotli krever at du setter opp og bruker HTTPS. I denne delen vil vi få et klarert sertifikat fra Let's Encrypt.
Last ned og installer 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
Sjekk versjonen.
acme.sh --version
# v2.8.0
Skaff RSA- og ECDSA-sertifikater for 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
Etter å ha kjørt kommandoene ovenfor, vil sertifikatene og nøklene dine være på følgende steder:
- RSA:
/etc/letsencrypt/example.com
- ECC/ECDSA:
/etc/letsencrypt/example.com_ecc
Trinn 2 – Installer Nginx fra det offisielle Nginx-depotet
Last ned og installer den nyeste hovedlinjen Nginx fra den offisielle Nginx-repoen.
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
Sjekk versjonen.
sudo nginx -v
# nginx version: nginx/1.15.2
Aktiver og start Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Trinn 3 – Last ned og kompiler Brotli-kildekoden
Etter å ha installert Nginx, må vi bygge Brotli-modulen ( ngx_brotli) som en dynamisk Nginx-modul. Fra Nginx versjon 1.11.5 er det mulig å kompilere individuelle dynamiske moduler uten å kompilere hele Nginx-programvaren. I de neste trinnene vil vi bygge Brotli-modulen som dynamisk uten å kompilere hele Nginx.
Last ned den nyeste versjonen av mainline Nginx-kildekoden og pakk den ut.
wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz
MERK : Det er veldig viktig at versjonsnumrene til Nginx-pakken og Nginx-kildekoden stemmer overens. Hvis du installerte Nginx 1.15.2 fra det offisielle Nginx-depotet, må du laste ned samme versjon av kildekoden , 1.15.2 i dette tilfellet.
Fjern nginx-1.15.2.tar.gz.
rm nginx-1.15.2.tar.gz
Klone ngx_brotlifra GitHub.
git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~
Naviger til Nginx-kildekodekatalogen.
cd ~/nginx-1.15.2
Last ned nødvendige biblioteker.
sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
Kompiler ngx_brotlisom en dynamisk modul og kopier den til standardkatalogen for Nginx-moduler, /etc/nginx/modules.
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules
List filer inn /etc/nginx/modulesog du vil se ngx_http_brotli_filter_module.soog ngx_http_brotli_static_module.so.
ls /etc/nginx/modules
Sett tillatelser til 644for alle .sofiler.
sudo chmod 644 /etc/nginx/modules/*.so
Vi er klare til å konfigurere Brotli-støtte i Nginx.
Kjør sudo vim /etc/nginx/nginx.confog legg til følgende to direktiver øverst i filen for å laste nye Brotli-moduler.
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Test konfigurasjonen.
sudo nginx -t
Lag en dokumentrotkatalog for example.comog lag index.htmlmed noe innhold i den.
sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit
Opprett en virtuell vert for example.com.
sudo vim /etc/nginx/conf.d/example.com.conf
Fyll den med følgende konfigurasjon.
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;
}
Test konfigurasjonen.
sudo nginx -t
Last inn Nginx på nytt.
sudo systemctl reload nginx.service
Besøk nettstedet ditt i nettleseren og åpne nettverksfanen for utviklerverktøy. Du vil se Content-Encoding: bri svarhodene. Det er indikatoren på at Brotli-komprimering fungerer.

![Legg til Brotli-støtte til Nginx på Ubuntu 18.04 Legg til Brotli-støtte til Nginx på Ubuntu 18.04]()
Du har aktivert Brotli-komprimering på webserveren din.