Nginx

Kuidas lubada Brotli tihendamine Nginxis

Kuidas lubada Brotli tihendamine Nginxis

Brotli tihendamine on üldise otstarbega tihendusmeetod, mida brauserid laialdaselt toetavad. See on võrreldav praegu saadaolevate tihendusmeetoditega, kuna see pakub 20–26% paremaid tihendusastmeid. Sellest hoolimata pole see hea, kui veebiserver ei saada Brotli algoritmiga tihendatud tekstipõhiseid ressursse.

Sellest artiklist saame teada, kuidas tihendamine serveris töötab ja miks see kasulik on? Samuti õpime installima Nginxi serveri ja saama oma serverilt Brotli tihendatud failide pakkumise.

Taust

Tihendusmeetodid / algoritmid parandavad veebisaidi toimivust, vähendades sisu suurust. Seega võtab tihendatud andmed väikese koormuse ja edastusaja. Sellel on aga oma hind. Parema tihendusmäära pakkumiseks kasutavad serverid palju arvutuslikke ressursse. Seega, seda parem, kallim. Seega pakutakse tihendusformaatide täiustamiseks palju jõupingutusi, kasutades samal ajal minimaalseid protsessori tsükleid.

Nüüdseks oli kõige potentsiaalsem tihendusformaat zzipitud. Hiljuti asendati gzip uue tihendusalgoritmiga, mida tuntakse Brotli nime all. See on täiustatud pakkimisalgoritm, mis koosneb Huffmani kodeerimisest, L77 algoritmist ja konteksti modelleerimisest. Seevastu Gzip on üles ehitatud Deflate algoritmile.

Google'i kujundatud kadudeta tihendusformaat on tihedalt seotud tühjenenud tihendusformaadiga. Mõlemad tihendusmeetodid kasutavad tagasi viitamiseks libistavaid aknaid. Brotli libiseva akna suurus on vahemikus 1 KB kuni 16 MB. Seevastu Gzip on fikseeritud akna suurusega 32KB. See tähendab, et Brotli aken on 512 korda suurem kui tühjendusaken, mis pole asjakohane, kuna üle 32 KB suurused tekstifailid on veebiserverites harva.

Serveri tihendamise ühilduvus on oluline

Alati, kui laadime faili brauserist alla, küsib brauser serverilt päise kaudu, millist tihendamist see toetab. Näiteks kui brauser toetab zzip ja tühjendama lahti võtma. See lisab need valikud oma Nõus-kodeerimine, päis, st.e.,

Accept-Encoding = ”deflate, gzip”

Seega ei hõlma brauserid, mis neid vorminguid ei toeta, neid päisesse. Kui server vastab sisuga, räägib ta brauserile päise kaudu tihendusformaadist, Sisu kodeerimine. Seega, kui see toetab gzip-i, näeb päis välja selline:

Content-Encoding = ”gzip”

Selliste brauserite päised nagu Firefox, mis toetab Brotli tihendamist, ja veebiserver, mille Brotli moodul on installitud, välja nägema järgmiselt:

Accept-Encoding = ”deflate, gzip, br”
Content-Encoding = ”gzip, br”

Seega, kui brauser kasutab parimat tihendusformaati ja veebiserver mitte, pole see hea, kuna veebiserver ei saada eelistatud tihendusalgoritmiga faile tagasi. Sellepärast on oluline installida veebiserveri tihendusmoodul.

Serveri installimine

Enne Brotli konfiguratsiooniga edasi liikumist seadistame oma Nginxi serveri. Enne seda sudo apt-get värskendus oma Ubuntu levitamine ja tippige oma bashi terminalis järgmised käsud.

[meiliga kaitstud]: ~ $ sudo apt-get update
[meiliga kaitstud]: ~ $ sudo apt-get install nginx -y
[meiliga kaitstud]: ~ $ sudo service nginx start

Brotli tihendamise lubamiseks Nginxis koostame oma .nii et moodulid vastavad meie Nginxi versiooni üksikasjadele. Nagu näidatud, väljastab järgmise käsu tippimine Nginxi versiooni:

[meiliga kaitstud]: ~ $ nginx -v
nginxi versioon: nginx / 1.18.0 (Ubuntu)

Kasuta wget lähtekoodi allalaadimiseks Nginxi veebisaidilt käsk koos teie nginxi versiooni üksikasjadega.

[meiliga kaitstud]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.tõrv.gz
--2021-02-07 02: 57: 33-- https: // nginx.org / download / nginx-1.18.0.tõrv.gz
Nginxi lahendamine.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Ühendamine nginxiga.org (nginx.org) | 3.125.197.172 |: 443 ... ühendatud.
HTTP päring on saadetud, ootab vastust ... 200 OK
Pikkus: 1039530 (1015K) [rakendus / oktett-voog]
Salvestamine kausta: 'nginx-1.18.0.tõrv.gz '
nginx-1.18.0.tõrv.gz 100% [================================================= ====================>] 1015K 220KB / s 4-s.8s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.tõrv.gz 'salvestatud [1039530/1039530]

Kasutame seda lähtekoodi kompileerimiseks *.nii kahendfailid Brotli tihendamiseks. Nüüd eraldage fail järgmise käsu abil.

[meiliga kaitstud]: ~ $ tar xzf nginx-1.18.0.tõrv.gz

Brotli mooduli seadistamine

Nüüd on Google välja andnud Nginxi jaoks Brotli mooduli. Kloonime mooduli Google'i hoidlast kloonimisega.

[meiliga kaitstud]: ~ $ git kloon https: // github.com / google / ngx_brotli - rekursiivne.

Me saame cd sisse nginx-1.18.0 kaust dünaamilise Brotli mooduli konfigureerimiseks.

[meiliga kaitstud]: ~ $ cd nginx-1.18.0 /
[meiliga kaitstud]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli

Märkus. Seadistamisel võidakse kuvada järgmine tõrge

./ configure: tõrge: HTTP ümberkirjutamise moodul nõuab PCRE-teeki.
Võite mooduli keelata, kasutades käsku -without-http_rewrite_module
suvandit või installige PCRE teek süsteemi või ehitage PCRE teek
staatiliselt allikast nginxiga, kasutades --with-pcre = valik.

Sel juhul käivitage pcre teegi installimiseks järgmine käsk

[meiliga kaitstud]: ~ $ sudo apt-get install libpcre3-dev -y

Mooduli koostamine

Me kasutame tegema käsu luua moodulid nginx-1 sees olev kaust.18.0 kataloog.

[meiliga kaitstud]: ~ $ sudo moodulid

Me kasutame cp käsk kopeerida ngx_http_brotli *.nii failid nginx-1.18.0 / objs moodulite kausta.

[meiliga kaitstud]: ~ $ cd / nginx-1.18.0 / objs /
[meiliga kaitstud]: ~ $ sudo cp  ngx_http_brotli *.nii / usr / share / nginx / moodulid

Nüüd loetlege failide sisu, kasutades ls käsk. Märkate, et see koosneb kahest erinevast moodulifailist, st.e.:

[meiliga kaitstud]: ~ $ ls ngx_http_brotli *.nii
ngx_http_brotli_filter_module.nii
ngx_http_brotli_static_module.nii
  • Tavaline Brotli moodul: Ngx_http_brotli_filter_module.nii tihendab moodul kõiki faile käigu pealt ja nõuab seetõttu rohkem arvutuslikke ressursse
  • Staatiline Brotli moodul: Ngx_http_brotli_static_module.nii et moodul võimaldab tal serveerida eelnevalt tihendatud staatilisi faile, seega vähem ressursimahukaid.

Nüüd kasutage faili / etc / nginx / nginx avamiseks oma lemmikredaktorit.conf-fail Brotli laadimismoodulite lisamiseks Brotli seadistamise alustamiseks järgmiste ridade lisamisega:

[meiliga kaitstud]: ~ $ sudo vim / etc / nginx / nginx.konf
# Laadige mooduli sektsioon
load_module "moodulid / ngx_http_brotli_filter_module.nii ";
load_module "moodulid / ngx_http_brotli_static_module.nii ";

Lisame ka konfiguratsioonikaustade teed / etc / nginx / conf.d / *.konf

ja / usr / share / nginx / moodulid / *.konf ülaltoodud failis, näiteks:

http
# Kaasa konfiguratsioonikaustad
sisaldab / etc / nginx / conf.d / *.konf;
kaasata / usr / share / nginx / moodulid / *.konf;

Brotli konfiguratsiooni lisamiseks avage fail / etc / nginx / conf.d / brotli.konf

faili vim redaktor ja lubage Brotli, seadistades järgmised konfiguratsioonidirektiivid:

brotli peal;
brotli_static on;
brotli_comp_level 6;
brotli_types application / rss + xml application / xhtml + xml
tekst / css tekst / tavaline;

"brotli välja | sisse”Väärtus lubab või keelab sisu dünaamilise või lennult tihendamise.

"brotli_ static on ' võimaldab Nginxi serveril kontrollida, kas failiga .br laiendused on olemas või mitte. Selle sätte võime muuta ka valikuks väljas või alati. The alati väärtus võimaldab serveril saata eelnevalt tihendatud sisu ilma kinnitamata, kas brauser seda toetab või mitte. Kuna Brotli on ressursimahukas, sobib see moodul kõige paremini kitsaskohtade vähendamiseks.

"brotli_comp_level 6”Direktiiv seab dünaamilise tihendamise kvaliteeditasemeks 6. See võib olla vahemikus 0 kuni 11.

Lõpuks lubage dünaamiline tihendamine konkreetsete MIME tüüpide jaoks, samas kui teksti / HTML-vastused tihendatakse alati. Selle direktiivi vaikesüntaks on brotli_types [miimikatüüp]. Seadistamisdirektiivi kohta leiate lisateavet Githubist.

Salvestage muudatused, taaskäivitage Nginxi teenus, tippides "Sudo teenuse taaskäivitage nginx" ja see kõik on tehtud.

Järeldus

Pärast muudatusi märkate mõningaid ilmseid parendusi toimivusmõõdikus. Kuid sellega kaasneb protsessori suurenenud koormuse tipphetkedel kerge puudus. Selliste olukordade vältimiseks hoidke silma peal protsessori kasutamisel; kui see jõuab regulaarselt 100% -ni, saame paljude eelistuste kohaselt kasutada paljusid võimalusi, näiteks eelnevalt kokkusurutud või staatilise sisu esitamine, tihendustaseme langetamine ja lennult tihendamise väljalülitamine paljude seas.

WinMouse võimaldab teil kohandada ja parandada hiirekursori liikumist Windowsi arvutis
Kui soovite oma hiirekursori vaikefunktsioone paremaks muuta, kasutage vabavara WinMouse. See lisab rohkem funktsioone, mis aitavad teil alandlikust h...
Hiire vasakklõps nupp ei tööta Windows 10-s
Kui kasutate oma sülearvuti või lauaarvutiga spetsiaalset hiirt, kuid hiire vasakklõps nupp ei tööta mingil põhjusel operatsioonisüsteemis Windows 10/...
Kursor hüppab või liigub juhuslikult Windows 10-s kirjutamise ajal
Kui leiate, et hiire kursor hüppab või liigub Windowsi sülearvutisse või arvutisse kirjutades automaatselt, juhuslikult, võivad mõned neist soovituste...