Nginx

Kaip įjungti „Brotli“ suspaudimą „Nginx“

Kaip įjungti „Brotli“ suspaudimą „Nginx“

„Brotli“ glaudinimas yra bendros paskirties glaudinimo technika, plačiai palaikoma visose naršyklėse. Tai galima palyginti su šiuo metu turimais suspaudimo metodais, nes siūlomi 20–26% geresni suspaudimo laipsniai. Nepaisant to, tai nėra gerai, nebent žiniatinklio serveris siunčia suspausto teksto šaltinius naudodamas „Brotli“ algoritmą.

Šiame straipsnyje sužinosime, kaip suspaudimas veikia serveryje ir kodėl jis naudingas? Taip pat išmoksime įdiegti „Nginx“ serverį ir priversti savo serverį pateikti „Brotli“ suglaudintus failus.

Fonas

Suspaudimo metodai / algoritmai pagerina svetainės našumą mažindami turinio dydį. Taigi suglaudintiems duomenims reikia mažos apkrovos ir perdavimo laiko. Tačiau tai turi kainą. Serveriai naudoja daugybę skaičiavimo išteklių, kad užtikrintų geresnį glaudinimo laipsnį. Vadinasi, geriau, brangu. Taigi, norint pagerinti glaudinimo formatus, naudojant minimalius procesoriaus ciklus, dedama daug pastangų.

Iki šiol potencialiausias glaudinimo formatas buvo gzip. Neseniai „gzip“ pakeistas nauju suspaudimo algoritmu, žinomu kaip „Brotli“. Tai pažangus suspaudimo algoritmas, sudarytas iš Huffmano kodavimo, L77 algoritmo ir konteksto modeliavimo. Priešingai, „Gzip“ yra paremtas „Deflate“ algoritmu.

„Google“ sukurtas be nuostolių glaudinimo formatas yra glaudžiai susijęs su ištuštinto glaudinimo formatu. Abiejuose glaudinimo metoduose grįžtamajai nuorodai naudojami stumdomi langai. Stumdomo lango „Brotli“ dydis svyruoja nuo 1 KB iki 16 MB. Priešingai, „Gzip“ fiksuotas lango dydis yra 32 KB. Tai reiškia, kad „Brotli“ langas yra 512 kartų didesnis nei ištuštinimo langas, o tai nėra svarbu, nes didesni nei 32 KB teksto failai retai būna žiniatinklio serveriuose.

Serverio glaudinimo suderinamumas yra svarbus

Kai atsisiunčiame failą iš naršyklės, naršyklė per antraštę paprašo serverio, kokį glaudinimą palaiko. Pavyzdžiui, jei naršyklė palaiko gzip ir ištuštinti išspausti. Šias parinktis ji pridės savo Priimti-koduoti, antraštė, t.e.,

„Accept-Encoding“ = „deflate, gzip“

Taigi naršyklės, kurios nepalaiko šių formatų, jų neįtrauks į antraštę. Kai serveris atsako turiniu, per antraštę jis praneša naršyklei apie suglaudinimo formatą, Turinio kodavimas. Taigi, jei jis palaiko gzip, antraštė atrodo taip:

„Content-Encoding“ = „gzip“

Naršyklių, pvz., „Firefox“, palaikančių „Brotli“ glaudinimą, ir interneto serverio, kuriame įdiegtas „Brotli“ modulis, antraštės atrodo taip:

„Accept-Encoding“ = „deflate, gzip, br“
„Content-Encoding“ = „gzip, br“

Taigi, jei naršyklė naudoja geriausią suspaudimo formatą, o žiniatinklio serveris - ne, tai nėra gerai, nes žiniatinklio serveris neatsiųs failų su pageidaujamu glaudinimo algoritmu. Štai kodėl svarbu įdiegti interneto serverio glaudinimo modulį.

Serverio diegimas

Prieš eidami į priekį naudodami „Brotli“ konfigūraciją, sukursime savo „Nginx“ serverį. Prieš tai sudo apt-get atnaujinimas savo „Ubuntu“ paskirstymą ir įveskite šias komandas savo „bash“ terminale.

[apsaugotas el. paštu]: ~ $ sudo apt-get update
[apsaugotas el. paštas]: ~ $ sudo apt-get install nginx -y
[apsaugotas el. pašto adresas]: ~ $ sudo service nginx start

Norėdami įgalinti „Brotli“ glaudinimą „Nginx“, sukursime savo .taigi moduliai pagal mūsų „Nginx“ versijos informaciją. Kaip parodyta, įvedę šią komandą bus išvesta „Nginx“ versija:

[apsaugotas el. paštas]: ~ $ nginx -v
„nginx“ versija: „nginx“ / 1.18.0 („Ubuntu“)

Naudoti wget komandą kartu su jūsų „nginx“ versijos informacija atsisiųsti šaltinio kodą iš „Nginx“ svetainės.

[apsaugotas el. paštu]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.degutas.gz
--2021-02-07 02: 57: 33-- https: // nginx.org / download / nginx-1.18.0.degutas.gz
Nginx sprendimas.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Prisijungiama prie „nginx“.org (nginx.org) | 3.125.197.172 |: 443 ... prijungtas.
HTTP užklausa išsiųsta, laukia atsakymo ... 200 Gerai
Ilgis: 1039530 (1015K) [application / octet-stream]
Išsaugoma: 'nginx-1.18.0.degutas.gz '
nginx-1.18.0.degutas.gz 100% [================================================ ====================>] 1015K 220KB / s per 4.8s
2021-02-07 02:57:38 (212 KB / s) - „nginx-1.18.0.degutas.gz 'išsaugotas [1039530/1039530]

Mes naudosime šį šaltinio kodą *.taigi dvejetainiai failai Brotli suspaudimui. Dabar ištraukite failą naudodami šią komandą.

[apsaugotas el. pašto adresas]: ~ $ tar xzf nginx-1.18.0.degutas.gz

„Brotli“ modulio konfigūracija

Dabar „Google“ išleido „Nginx“ skirtą „Brotli“ modulį. Mes klonuosime modulį iš „Google“ saugyklos.

[apsaugotas el. paštu]: ~ $ git klonas https: // github.com / google / ngx_brotli - rekursyvus.

Mes cd į nginx-1.18.0 aplanką, kad sukonfigūruotumėte dinaminį „Brotli“ modulį.

[apsaugotas el. paštu]: ~ $ cd nginx-1.18.0 /
[apsaugotas el. paštas]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli

Pastaba: konfigūruodami galite gauti šią klaidą

./ configure: error: HTTP perrašymo moduliui reikalinga PCRE biblioteka.
Galite išjungti modulį naudodami --without-http_rewrite_module
parinktį arba įdiekite PCRE biblioteką į sistemą arba sukurkite PCRE biblioteką
statiškai iš šaltinio su „nginx“, naudodami --with-pcre = variantą.

Tokiu atveju paleiskite šią komandą, kad įdiegtumėte kompiuterio biblioteką

[apsaugotas el. paštas]: ~ $ sudo apt-get install libpcre3-dev -y

Modulio sudarymas

Mes naudosime padaryti komanda sukurti a moduliai aplanką „nginx-1“ viduje.18.0 katalogas.

[apsaugotas el. paštu]: ~ $ sudo make moduliai

Mes naudojame cp komanda kopijuoti ngx_http_brotli *.taip failus iš nginx-1.18.0 / prieštarauja aplanką į aplanką moduliai.

[apsaugotas el. pašto adresas]: ~ $ cd / nginx-1.18.0 / objs /
[apsaugotas el. paštas]: ~ $ sudo cp  ngx_http_brotli *.taip / usr / share / nginx / moduliai

Dabar nurodykite failų turinį naudodami ls komandą. Jūs pastebėsite, kad jis susideda iš dviejų skirtingų modulių failų, t.e.:

[el. pašto saugoma]: ~ $ ls ngx_http_brotli *.taip
ngx_http_brotli_filter_module.taip
ngx_http_brotli_static_module.taip
  • Įprastas „Brotli“ modulis: „Ngx_http_brotli_filter_module“.taigi modulis suspaudžia visus failus skrisdamas, todėl tam reikia daugiau skaičiavimo išteklių
  • Statinis „Brotli“ modulis: Ngx_http_brotli_static_module.taigi modulis leidžia jam teikti iš anksto suglaudintus statinius failus, taigi mažiau išteklių reikalaujantis.

Dabar naudokite mėgstamą redaktorių, kad atidarytumėte / etc / nginx / nginx.conf failą, kad pridėtumėte „Brotli“ apkrovos modulius, kad pradėtumėte „Brotli“ konfigūraciją įtraukdami šias eilutes:

[apsaugotas el. paštu]: ~ $ sudo vim / etc / nginx / nginx.konf
# Įkelkite modulio skyrių
load_module "moduliai / ngx_http_brotli_filter_module.taip ";
load_module "moduliai / ngx_http_brotli_static_module.taip ";

Taip pat įtrauksime konfigūracijos aplankų kelius / etc / nginx / conf.d / *.konf

ir / usr / share / nginx / moduliai / *.konf aukščiau esančiame faile, pvz .:

http
# Įtraukti konfigūracijos aplankus
įtraukti / etc / nginx / conf.d / *.konf
įtraukti / usr / share / nginx / moduliai / *.konf

Norėdami pridėti „Brotli“ konfigūraciją, atidarykite / etc / nginx / conf.d / brotli.konf

failą vim redaktorių ir įgalinkite „Brotli“ nustatydami šias konfigūravimo instrukcijas:

brotli ant;
brotli_static on;
brotli_comp_level 6;
„brotli_types“ programa / rss + xml programa / xhtml + xml
text / css text / plain;

brotli off | įjungta“Reikšmė įgalina arba išjungia dinaminį arba tiesioginį turinio glaudinimą.

brotli_ static on ' įgalina „Nginx“ serverį patikrinti, ar iš anksto suglaudinti failai .br plėtiniai egzistuoja arba ne. Mes taip pat galime šį nustatymą paversti pasirinkimu išjungtas arba visada. The visada reikšmė leidžia serveriui siųsti iš anksto suglaudintą turinį nepatvirtinant, ar naršyklė jį palaiko, ar ne. Kadangi „Brotli“ reikalauja daug išteklių, šis modulis yra tinkamiausias siekiant sumažinti kliūtis.

brotli_comp_level 6“Direktyva nustato dinaminio glaudinimo kokybės lygį iki 6. Jis gali svyruoti nuo 0 iki 11.

Galiausiai įgalinkite dinaminį glaudinimą tam tikriems MIME tipams, o teksto / HTML atsakymai visada yra suglaudinami. Numatytoji šios direktyvos sintaksė yra brotli_types [mime type]. Daugiau apie konfigūracijos direktyvą galite rasti „Github“.

Išsaugokite pakeitimus, iš naujo paleiskite „Nginx“ paslaugą įvesdami „Sudo service restart nginx“ ir viskas padaryta.

Išvada

Atlikę pakeitimus pastebėsite keletą akivaizdžių našumo metrikos patobulinimų. Tačiau tai turi nedidelį padidėjusios procesoriaus apkrovos piko metu trūkumą. Norėdami išvengti tokių situacijų, stebėkite procesoriaus naudojimą; jei jis reguliariai pasiekia 100%, galime naudoti daugybę pasirinkimų, pavyzdžiui, pateikti iš anksto suspausto ar statinio turinio, sumažinti suspaudimo lygį ir išjungti suspaudimą skrendant.

Įdiekite naujausią „Dolecin Emulator“, skirtą „Gamecube“ ir „Wii“, sistemoje „Linux“
„Delfinų emuliatorius“ leidžia žaisti pasirinktus „Gamecube“ ir „Wii“ žaidimus „Linux“ asmeniniuose kompiuteriuose (PC). „Dolphin Emulator“ yra laisv...
Kaip naudoti „GameConqueror Cheat Engine“ sistemoje „Linux“
Straipsnyje pateikiamas „GameConqueror“ apgaulės variklio naudojimo „Linux“ vadove. Daugelis žaidėjų, žaidžiančių sistemoje „Windows“, dažnai naudoja ...
Geriausi „Linux“ žaidimų konsolių emuliatoriai
Šiame straipsnyje bus išvardyta populiari žaidimų konsolių emuliavimo programinė įranga, skirta „Linux“. „Emuliacija“ yra programinės įrangos suderina...