Nginx met Brotli Compressie installeren op Ubuntu 18.04 LTS
Nginx (engine-x) is een open bron hoog-performante HTTP server, reverse proxy en IMAP/POP3 proxy server. De opmerkelijke eigenschappen van Nginx zijn stabiliteit, een rijke functieset, eenvoudige configuratie en laag geheugengebruik.
Brotli is een open bron compressie-algoritme, gemaakt door Google. Brotli geeft betere en verliesvrije compressie dan gzip, en het wordt nu ondersteund door belangrijke browsers en webservers.
Meer over Brotli prestaties:
In deze zelfstudie laat ik je stap-voor-stap zien hoe je ondersteuning voor Brotli compressie algoritme toevoegt aan Nginx webserver. We zullen een aangepast nginx pakket bouwen dat brotli compressie algoritme ondersteunt. We zullen de nieuwste Ubuntu versie gebruiken, plus we zullen een nginx pakket bouwen voor het Debian besturingssysteem.
Vereisten
- Ubuntu 18.04
- Root voorrechten
Wat zullen we doen?
- Bouw afhankelijkheden installeren
- Installeer Nginx met ngx_brotli
- Voeg Nginx Repository toe
- Download Nginx en ngx_brotli
- Bouw Nginx met ngx_brotli ondersteuning
- Installeer Nginx en schakel ngx_brotli Ondersteuning in
- Configureer Nginx Virtuele Host
- Testen van
Stap 1 – Bouw afhankelijkheden installeren
Het eerste wat we voor deze gids moeten doen is de build afhankelijkheden op het systeem installeren.
Werk de Ubuntu repository bij en installeer dan alle pakketten build afhankelijkheden met een apt commando hieronder.
sudo apt update sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
Wacht tot alle pakketten geïnstalleerd zijn.
Stap 2 – Installeer Nginx met ngx_brotli
In deze stap installeren we het aangepaste nginx pakket dat brotli compressie algoritme ondersteunt op het Ubuntu systeem. En we zullen de laatste stabiele versie van het nginx pakket gebruiken dat uit de officiële nginx repository kan worden gedownload.
Nginx Repository toevoegen
Voordat je de nginx repository toevoegt, voeg je het nginx sleutelteken toe met het onderstaande commando.
curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Maak nu een nieuw nginx repository bestand ‘nginx.list’ aan in de ‘/etc/apt/sources.list.d’ directory met behulp van vim editor.
vim /etc/apt/sources.list.d/nginx.list
Plak er onderstaande configuratie in.
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Bewaar en sluit af.
Werk nu de ubuntu repositories bij.
sudo apt-get update
De Nginx repository is toegevoegd.
Download Nginx en ngx_brotli bronbestanden
Nu zullen we de Nginx pakketten uit de nginx repository downloaden met het apt commando.
Ga naar de ‘/usr/local/src’ directory en download de Nginx broncode met het onderstaande apt commando.
cd /usr/local/src sudo apt source nginx
Installeer nu alle benodigde pakketafhankelijkheden voor nginx.
sudo apt build-dep nginx -y
En als alle installatie voltooid is, kloon je de ‘ngx_brotli’ broncode van GitHub.
git clone --recursive https://github.com/google/ngx_brotli.git
Nginx en ngx_brotli zijn gedownload.
Bouw Nginx met ngx_brotli ondersteuning
Nu moeten we de standaard Nginx bouwregel bewerken, we moeten de ngx_brotli toevoegen aan de bouwregel van de pakketten.
Ga naar de ‘/usr/local/src/nginx-*’ directory en bewerk de debian ‘rules’ configuratie.
cd /usr/local/src/nginx-*/ vim debian/rules
Nu krijg je twee bouwomgevingen voor‘config.env.nginx‘ en‘config.env.nginx_debug‘. Voeg de ‘–add-module=’ optie voor ngx_brotli aan beide bouwomgevingen toe.
--add-module=/usr/local/src/ngx_brotli
Sla op en sluit af.
En we zijn klaar om het nginx pakket met ngx_brotli ondersteuning te compileren en te bouwen.
Voer het onderstaande dpkg commando uit.
sudo dpkg-buildpackage -b -uc -us
Merk op:
- -b: Bouw binair-only, geen bronbestanden.
- -uc : niet-ondertekend .buildinfo en .changes bestand.
- -us: niet-ondertekend bronpakket.
Als het bouwen voltooid is, krijg je de nginx-*.deb pakketten in de ‘/usr/local/src’ directory zoals hieronder getoond.
ls -lah
Installeer Nginx en schakel Brotli ondersteuning in
De nginx build met ngx_brotli is voltooid, installeer de nginx-*.deb pakketten met het onderstaande dpkg commando.
cd /usr/local/src/ sudo dpkg -i *.deb
Nginx met de ngx_brotli ondersteuning is geïnstalleerd.
Ga nu naar de ‘/etc/nginx’ configuratiedirectory en bewerk het configuratiebestand ‘nginx.conf’.
cd /etc/nginx/ vim nginx.conf
Schakel de ngx_brotli op nginx in door de onderstaande configuratie toe te voegen binnen de ‘http {…}’ sectie.
brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;
Sla op en sluit af.
Test de nginx configuratie en controleer of er geen fout optreedt.
nginx -t
De brotli compressie ondersteuning is ingeschakeld.
Stap 3 – Configureer Nginx Virtuele Host
In deze stap proberen we een nieuwe virtuele host te maken voor de domeinnaam nginx.hakase-labs.io.
Opmerking:
- Brotli compressie ondersteunt alleen de HTTPS site, dus zorg ervoor dat je de certificaat bestanden voor je domeinnaam hebt, of je kunt gratis Letsencrypt SSL certificaten genereren.
Ga naar de ‘/etc/nginx’ configuratie directory en maak een nieuwe virtuele host configuratie ‘brotli.conf’.
cd /etc/nginx/ vim conf.d/brotli.conf
Plak er de volgende nginx virtuele host configuratie in.
# Redirect HTTP to HTTPS Nginx server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri; } # SSL configuration server { listen 443 ssl http2; server_name nginx.hakase-labs.io; ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # web root directory location / { root /usr/share/nginx/html; } }
Bewaar en sluit af.
Opmerking:
- Verander de domeinnaam met je eigen domein.
- Verander het SSL certificaten pad.
Test nu de nginx configuratie en controleer of er geen fout optreedt, herstart dan de dienst.
nginx -t systemctl restart nginx
De nieuwe nginx virtuele host is toegevoegd.
Stap 4 – Testen
Open je webbrowser en typ de domeinnaam in, de mijne is:
http://nginx.hakase-labs.io
Je wordt nu doorverwezen naar de https verbinding. Klik met rechts op de pagina en klik op‘Inspect Element‘. Klik op het tabblad‘Network‘ en herlaad de pagina.
Klik op het requests detail en je krijgt alle request en response header van de webserver te zien, zoals hieronder.
Op het onderdeel ‘Response headers’ zie je de ‘content-encoding: br’ voor brotli ondersteuning.
Als je nu nog een test wilt doen, kun je het curl commando gebruiken zoals hieronder getoond.
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
En je ziet het resultaat ‘content-encoding: br’ voor brotli ondersteuning.
De Nginx installatie met Brotli Compressie Ondersteuning op Ubuntu 18.04 is met succes voltooid.