Nginx

Kako omogočiti stiskanje Brotli v Nginxu

Kako omogočiti stiskanje Brotli v Nginxu

Stiskanje Brotli je splošna tehnika stiskanja, ki je široko podprta v brskalnikih. Primerljiv je s trenutno razpoložljivimi metodami stiskanja, saj ponuja 20-26% boljše razmerje stiskanja. Kljub temu ni dobro, če spletni strežnik ne pošilja stisnjenih besedilnih virov z algoritmom Brotli.

V tem članku bomo izvedeli, kako deluje stiskanje v strežniku in zakaj je koristno? Naučili se bomo tudi namestiti strežnik Nginx in naš strežnik priskrbel stisnjene datoteke Brotli.

Ozadje

Tehnike stiskanja / algoritmi izboljšajo delovanje spletnega mesta z zmanjšanjem velikosti vsebine. Stisnjeni podatki zato potrebujejo majhen čas obremenitve in prenosa. Vendar ima svojo ceno. Strežniki uporabljajo veliko računalniških virov, da zagotovijo boljšo stopnjo stiskanja. Zato bolje, dražje. Tako je dodano veliko truda za izboljšanje formatov stiskanja ob uporabi minimalnih ciklov procesorja.

Do zdaj je bila gzipirana najbolj potencialna oblika stiskanja. V zadnjem času je gzip nadomeščen z novim algoritmom stiskanja, znanim kot Brotli. Gre za napredni algoritem stiskanja, sestavljen iz Huffmanovega kodiranja, algoritma L77 in modeliranja konteksta. V nasprotju s tem je Gzip zgrajen na algoritmu Deflate.

Oblika stiskanja brez izgub, ki jo je zasnoval Google, je tesno povezana s formatom stiskanja. Oba načina stiskanja uporabljata drsna okna za referenciranje nazaj. Velikost drsnega okna Brotli je od 1 KB do 16 MB. V nasprotju s tem ima Gzip fiksno velikost okna 32 KB. To pomeni, da je Brotlijevo okno 512-krat večje od izpušnega okna, kar ni pomembno, saj so besedilne datoteke, večje od 32 KB, redko na spletnih strežnikih.

Združljivost stiskanja strežnika je pomembna

Vsakič, ko prenesemo datoteko iz brskalnika, brskalnik prek glave zahteva strežnik, kakšno stiskanje podpira. Na primer, če brskalnik podpira gzip in izprazniti za dekompresijo. Te možnosti bo dodal v svoj Sprejmi-kodiraj, glava, tj.e.,

Accept-Encoding = "deflate, gzip"

Zato jih brskalniki, ki ne podpirajo teh formatov, ne vključijo v glavo. Ko se strežnik odzove z vsebino, brskalniku prek glave sporoči format stiskanja, Kodiranje vsebine. Če torej podpira gzip, je glava videti tako:

Content-Encoding = "gzip"

Glave brskalnikov, kot je Firefox, ki podpirajo stiskanje Brotli, in spletni strežnik, ki ima nameščen modul Brotli, izgledajo tako:

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

Če brskalnik uporablja najboljši format stiskanja, spletni strežnik pa ne, ni dobro, saj spletni strežnik ne bo poslal datotek z želenim algoritmom stiskanja. Zato je pomembno, da za spletni strežnik namestite kompresijski modul.

Namestitev strežnika

Preden nadaljujemo s konfiguracijo Brotli, bomo nastavili strežnik Nginx. Pred tem sudo apt-get posodobitev svojo distribucijo Ubuntuja in vnesite naslednje ukaze v vaš bash terminal.

[e-pošta zaščitena]: ~ $ sudo apt-get update
[e-pošta zaščitena]: ~ $ sudo apt-get install nginx -y
[zaščiteno po e-pošti]: ~ $ sudo service nginx start

Da omogočimo stiskanje Brotlija v Nginxu, bomo sestavili našo .torej moduli v skladu z našimi podrobnostmi o različici Nginx. Kot je prikazano, bo z vnosom naslednjega ukaza izdana različica Nginx:

[zaščiteno po e-pošti]: ~ $ nginx -v
različica nginx: nginx / 1.18.0 (Ubuntu)

Uporabi wget ukaz skupaj s podrobnostmi o različici nginx za prenos izvorne kode s spletnega mesta Nginx.

[zaščiteno po e-pošti]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.katran.gz
--2021-02-07 02: 57: 33 - https: // nginx.org / download / nginx-1.18.0.katran.gz
Reševanje nginxa.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Povezovanje z nginx.org (nginx.org) | 3.125.197.172 |: 443… priključen.
Zahteva HTTP poslana, čaka na odgovor ... 200 OK
Dolžina: 1039530 (1015K) [aplikacija / oktetni tok]
Shranjevanje v: 'nginx-1.18.0.katran.gz '
nginx-1.18.0.katran.gz 100% [================================================ ====================>] 1015K 220KB / s v 4.8s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.katran.gz 'shranjeno [1039530/1039530]

To izvorno kodo bomo uporabili za sestavljanje *.torej binarne datoteke za stiskanje Brotlija. Zdaj datoteko izvlecite z naslednjim ukazom.

[zaščiteno po e-pošti]: ~ $ tar xzf nginx-1.18.0.katran.gz

Konfiguracija modula Brotli

Zdaj je Google izdal modul Brotli za Nginx. Modul bomo git-klonirali iz Googlovega skladišča.

[e-pošta zaščitena]: ~ $ git clone https: // github.com / google / ngx_brotli --rekurzivno.

Bomo cd v nginx-1.18.0 mapo za konfiguracijo dinamičnega modula Brotli.

[e-pošta zaščitena]: ~ $ cd nginx-1.18.0 /
[e-pošta zaščitena]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli

Opomba: Med konfiguriranjem se lahko prikaže naslednja napaka

./ configure: error: modul za prepisovanje HTTP zahteva knjižnico PCRE.
Modul lahko onemogočite z uporabo --without-http_rewrite_module
ali namestite knjižnico PCRE v sistem ali zgradite knjižnico PCRE
statično iz vira z nginx z uporabo --with-pcre = možnost.

V tem primeru zaženite naslednji ukaz, da namestite knjižnico pcre

[e-pošta zaščitena]: ~ $ sudo apt-get install libpcre3-dev -y

Kompilacija modulov

Uporabili bomo naredite ukaz za ustvarjanje moduli v mapi nginx-1.18.0 imenik.

[zaščiteno po e-pošti]: ~ $ moduli sudo make

Uporabljamo cp ukaz za kopiranje ngx_http_brotli *.torej datoteke iz nginx-1.18.0 / objs mapo v mapo modulov.

[zaščitena po e-pošti]: ~ $ cd / nginx-1.18.0 / objs /
[e-pošta zaščitena]: ~ $ sudo cp  ngx_http_brotli *.torej / usr / share / nginx / module

Zdaj navedite vsebino datotek s pomočjo ls ukaz. Opazili boste, da je sestavljen iz dveh različnih datotek modula, tj.e.:

[e-pošta zaščitena]: ~ $ ls ngx_http_brotli *.torej
ngx_http_brotli_filter_module.torej
ngx_http_brotli_static_module.torej
  • Redni modul Brotli: Modul ngx_http_brotli_filter_filter.tako modul sproti stisne vse datoteke in zato zahteva več računskih virov
  • Statični modul Brotli: Ngx_http_brotli_static_module.tako mu modul omogoča, da streže vnaprej stisnjene statične datoteke, s čimer manj virov.

Zdaj s svojim najljubšim urejevalnikom odprite / etc / nginx / nginx.conf, da dodate module za nalaganje Brotli, da začnete konfiguracijo Brotli, tako da vključite naslednje vrstice:

[e-pošta zaščitena]: ~ $ sudo vim / etc / nginx / nginx.conf
# Naloži odsek modula
load_module "moduli / ngx_http_brotli_filter_module.tako ";
load_module "moduli / ngx_http_brotli_static_module.tako ";

Vključili bomo tudi poti do konfiguracijskih map / etc / nginx / conf.d / *.conf

in / usr / share / nginx / modules / *.conf v zgornji datoteki, kot so:

http
# Vključi mape z nastavitvami
vključi / etc / nginx / conf.d / *.conf;
vključi / usr / share / nginx / modules / *.conf;

Če želite dodati konfiguracijo Brotli, odprite / etc / nginx / conf.d / brotli.conf

v datoteki vim urejevalnik in omogočite Brotli z nastavitvijo naslednjih konfiguracijskih smernic:

brotli naprej;
brotli_static na;
brotli_comp_level 6;
brotli_types application / rss + xml application / xhtml + xml
besedilo / css besedilo / navaden;

brotli off | on”Vrednost omogoči ali onemogoči dinamično ali sprotno stiskanje vsebine.

"brotli_ static na ' omogoča strežniku Nginx, da preveri, ali so vnaprej stisnjene datoteke s .br razširitve obstajajo ali ne. To nastavitev lahko spremenimo tudi v možnost izključeno ali nenehno. The nenehno vrednost strežniku omogoča pošiljanje vnaprej stisnjene vsebine, ne da bi potrdil, ali jo brskalnik podpira ali ne. Ker je Brotli dolgotrajen, je ta modul najprimernejši za zmanjšanje ozkih grl.

brotli_comp_level 6"Direktiva nastavi raven kakovosti dinamičnega stiskanja na 6. Lahko se giblje od 0 do 11.

Nazadnje omogočite dinamično stiskanje za določene vrste MIME, medtem ko so odzivi besedila / html vedno stisnjeni. Privzeta sintaksa te direktive je brotli_types [mime type]. Več o konfiguracijski direktivi najdete na Githubu.

Shranite spremembe, znova zaženite storitev Nginx s tipkanjem “Sudo service restart nginx” in vse je narejeno.

Zaključek

Po spremembah boste opazili nekaj očitnih izboljšav v meritvah učinkovitosti. Vendar pa ima rahlo pomanjkljivost povečane obremenitve procesorja v času konic. Da bi se izognili takim situacijam, bodite pozorni na uporabo procesorja; če doseže 100% redno, lahko uporabimo številne možnosti v skladu z našimi željami, na primer predstavitev vnaprej stisnjene ali statične vsebine, znižanje stopnje stiskanja in izklop stiskanja med letom.

Srednji gumb miške ne deluje v sistemu Windows 10
The srednji gumb miške vam pomaga, da se pomikate po dolgih spletnih straneh in zaslonih z veliko podatkov. Če se to ustavi, boste na koncu uporabili ...
Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...