Voeg Brotli-ondersteuning toe aan Nginx op Ubuntu 18.04

Brotli (br) is een nieuw open source compressiealgoritme, ontwikkeld door Google als alternatief voor Gzip, Zopfli en Deflate. Het is formeel gedefinieerd in de Internet Engineering Task Force (IETF) als RFC 7932 . Uit de casestudy van Google over Brotli is gebleken dat compressieverhoudingen tot 26% kleiner zijn dan de huidige methoden, met minder CPU-gebruik.

Nginx heeft geen officiële ondersteuning, maar er is een module van derden ontwikkeld door Google genaamd ngx_brotli die we kunnen gebruiken om ondersteuning toe te voegen aan Nginx.

Deze gids laat zien hoe je Brotli-ondersteuning aan Nginx toevoegt op een nieuwe Ubuntu 18.04 LTS Vultr-instantie.

OPMERKING: deze handleiding zal worden gebruikt johndoeals voorbeeldgebruiker en example.comals voorbeelddomein. Vervang ze volgens uw namen.

Vereisten

  • Ubuntu 18.04 LTS-server
  • Nginx versie 1.11.5 of hoger
  • Domeinnaam met A/ AAAArecords ingesteld
  • TLS-certificaat

Voordat je begint

Controleer de Ubuntu-versie.

lsb_release -ds
# Ubuntu 18.04 LTS

Maak een nieuw non-rootgebruikersaccount aan met sudotoegang en schakel ernaar.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

OPMERKING : vervang johndoedoor uw gebruikersnaam .

Update de software van uw besturingssysteem.

sudo apt update && sudo apt upgrade -y

Stel de tijdzone in.

sudo dpkg-reconfigure tzdata

Installeer de vereiste build-tools en -pakketten.

sudo apt install -y build-essential git apt-transport-https socat

Stap 1 - Installeer Acme.sh en verkrijg een TLS-certificaat van Let's Encrypt

Brotli vereist dat u HTTPS instelt en gebruikt. In dit deel krijgen we een vertrouwd certificaat van Let's Encrypt.

Download en installeer 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 [email protected]
cd ~
source ~/.bashrc

Controleer de versie.

acme.sh --version
# v2.8.0

Verkrijgen van RSA- en ECDSA-certificaten voor example.com.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength 2048

# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength ec-256

Na het uitvoeren van de bovenstaande opdrachten bevinden uw certificaten en sleutels zich op de volgende locaties:

  • RSA: /etc/letsencrypt/example.com
  • ECC / ECDSA: /etc/letsencrypt/example.com_ecc

Stap 2 - Installeer Nginx vanuit de officiële Nginx-repository

Download en installeer de nieuwste hoofdlijn Nginx van de officiële 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

Controleer de versie.

sudo nginx -v
# nginx version: nginx/1.15.2

Schakel Nginx in en start het.

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

Stap 3 - Download en compileer de Brotli-broncode

Na het installeren van Nginx moeten we de Brotli-module ( ngx_brotli) bouwen als een dynamische Nginx-module. Vanaf Nginx versie 1.11.5 is het mogelijk om individuele dynamische modules te compileren zonder de volledige Nginx-software te compileren. In de volgende paar stappen zullen we de Brotli-module dynamisch bouwen zonder de volledige Nginx te compileren.

Download de nieuwste versie van de belangrijkste Nginx-broncode en pak deze uit.

wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz

OPMERKING : het is erg belangrijk dat versienummers van het Nginx-pakket en de Nginx-broncode overeenkomen. Als u Nginx 1.15.2 vanuit de officiële Nginx-repository hebt geïnstalleerd, moet u in dit geval dezelfde versie van de broncode , 1.15.2, downloaden .

Verwijderen nginx-1.15.2.tar.gz.

rm nginx-1.15.2.tar.gz

Kloon ngx_brotlivan GitHub.

git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~

Navigeer naar de Nginx-broncodemap.

cd ~/nginx-1.15.2

Download vereiste bibliotheken.

sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

Compileren ngx_brotlials een dynamische module en kopieer deze naar de standaard directory voor Nginx modules /etc/nginx/modules.

./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules

Maak een lijst van bestanden in /etc/nginx/modulesen u zult zien ngx_http_brotli_filter_module.soen ngx_http_brotli_static_module.so.

ls /etc/nginx/modules

Stel machtigingen in op 644voor alle .sobestanden.

sudo chmod 644 /etc/nginx/modules/*.so

Stap 4 - Configureer Nginx

We zijn klaar om Brotli-ondersteuning in Nginx te configureren.

Voer sudo vim /etc/nginx/nginx.confde volgende twee richtlijnen boven aan het bestand uit en voeg ze toe om nieuwe Brotli-modules te laden.

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

Test de configuratie.

sudo nginx -t

Maak een documenthoofdmap aan example.comen maak er index.htmlwat inhoud in.

sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit

Maak een virtuele host voor example.com.

sudo vim /etc/nginx/conf.d/example.com.conf

Vul het in met de volgende configuratie.

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 de configuratie.

sudo nginx -t

Herlaad Nginx.

sudo systemctl reload nginx.service

Bezoek uw site in uw webbrowser en open het netwerktabblad met ontwikkeltools. U zult zien Content-Encoding: brin de antwoordkoppen. Dat is de indicator dat Brotli-compressie werkt.

Voeg Brotli-ondersteuning toe aan Nginx op Ubuntu 18.04

Voeg Brotli-ondersteuning toe aan Nginx op Ubuntu 18.04

U heeft Brotli-compressie op uw webserver ingeschakeld.



Leave a Comment

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.