Nginx

Ako povoliť kompresiu Brotli v Nginx

Ako povoliť kompresiu Brotli v Nginx

Kompresia Brotli je kompresná technika na všeobecné účely, ktorá je široko podporovaná vo všetkých prehliadačoch. Je porovnateľný s momentálne dostupnými metódami kompresie, pretože ponúka o 20 - 26% lepšie kompresné pomery. Napriek tomu to nie je dobré, pokiaľ webový server neposiela komprimované textové zdroje pomocou algoritmu Brotli.

V tomto článku sa dozvieme, ako funguje kompresia na serveri a prečo je užitočná? Naučíme sa tiež inštalovať server Nginx a dosiahnuť, aby náš server poskytoval komprimované súbory Brotli.

Pozadie

Kompresné techniky / algoritmy zlepšujú výkonnosť webových stránok zmenšením veľkosti obsahu. Z tohto dôvodu trvá komprimované dáta malé zaťaženie a čas prenosu. Má to však svoju cenu. Servery využívajú veľa výpočtových zdrojov na zabezpečenie lepšej kompresnej rýchlosti. Preto, tým lepšie, drahé. Vynaložilo sa teda veľké úsilie na zlepšenie kompresných formátov pri využití minimálnych cyklov CPU.

Doteraz bol najpotenciálnejší formát kompresie gzip. Gzip je nedávno nahradený novým kompresným algoritmom známym ako Brotli. Jedná sa o pokročilý kompresný algoritmus zložený z Huffmanovho kódovania, algoritmu L77 a kontextového modelovania. Gzip je naopak postavený na algoritme Deflate.

Bezstratový kompresný formát navrhnutý spoločnosťou Google úzko súvisí s defláciou kompresného formátu. Obe metódy kompresie používajú posuvné okná na spätné referencovanie. Veľkosť posuvného okna Brotli sa pohybuje od 1 kB do 16 MB. Gzip má naopak pevnú veľkosť okna 32 kB. To znamená, že Brotliho okno je 512-krát väčšie ako okno deflácie, čo nie je relevantné, pretože textové súbory väčšie ako 32 KB sú na webových serveroch zriedka.

Kompatibilita kompresie servera je dôležitá

Kedykoľvek stiahneme súbor z prehľadávača, prehľadávač požiada server, aký typ kompresie podporuje, a to prostredníctvom hlavičky. Napríklad ak to prehliadač podporuje gzip a vypustiť dekomprimovať. Pridá tieto možnosti do svojej Prijať - kódovanie, hlavička, t.j.e.,

Accept-Encoding = ”deflate, gzip”

Prehliadače, ktoré nepodporujú tieto formáty, ich preto nezahrnú do hlavičky. Keď server odpovie obsahom, informuje prehliadač o kompresnom formáte prostredníctvom hlavičky, Kódovanie obsahu. Ak teda podporuje gzip, potom hlavička vyzerá takto:

Kódovanie obsahu = ”gzip”

Hlavičky prehľadávačov, ako je Firefox, ktoré podporujú kompresiu Brotli, a webový server, na ktorom je nainštalovaný modul Brotli, vyzerajú takto:

Accept-Encoding = ”deflate, gzip, br”
Kódovanie obsahu = ”gzip, br”

Ak teda prehliadač používa najlepší kompresný formát a webový server nie, nie je to dobré, pretože webový server neodošle späť súbory s preferovaným kompresným algoritmom. Preto je dôležité nainštalovať pre webový server kompresný modul.

Inštalácia servera

Pred pokračovaním v konfigurácii Brotli nastavíme náš server Nginx. Pred tým sudo aktualizácia apt-get svoju distribúciu Ubuntu a zadajte nasledujúce príkazy do vášho terminálu bash.

[chránené e-mailom]: ~ $ sudo apt-get aktualizácia
[chránené e-mailom]: ~ $ sudo apt-get install nginx -y
[chránené e-mailom]: ~ $ sudo služba nginx start

Aby sme povolili Brotliho kompresiu v Nginxe, zostavíme našu .takže moduly podľa našich podrobností o verzii Nginx. Ako je uvedené, zadaním nasledujúceho príkazu sa vygeneruje verzia Nginx:

[chránené e-mailom]: ~ $ nginx -v
verzia nginx: nginx / 1.18.0 (Ubuntu)

Použi wget príkazom spolu s podrobnosťami verzie nginx stiahnite zdrojový kód z webovej stránky Nginx.

[chránené e-mailom]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.decht.gz
--2021-02-07 02:57:33 - https: // nginx.org / download / nginx-1.18.0.decht.gz
Riešenie nginx.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Pripája sa k nginx.org (nginx.org) | 3.125.197.172 |: 443… pripojené.
Žiadosť HTTP bola odoslaná, čaká sa na odpoveď ... 200 OK
Dĺžka: 1039530 (1015K) [aplikácia / oktetový prúd]
Ukladá sa do: 'nginx-1.18.0.decht.gz '
nginx-1.18.0.decht.gz 100% [============================================== =====================>] 1015 kB, 220 kB / s za 4.8s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.decht.gz 'uložené [1039530/1039530]

Tento zdrojový kód použijeme na zostavenie *.takže binárne súbory pre kompresiu Brotli. Teraz súbor extrahujte pomocou nasledujúceho príkazu.

[chránené e-mailom]: ~ $ tar xzf nginx-1.18.0.decht.gz

Konfigurácia modulu Brotli

Teraz Google uvoľnil modul Brotli pre Nginx. Modul git-klonujeme z úložiska Google.

[chránené e-mailom]: ~ $ klon git https: // github.com / google / ngx_brotli - rekurzívna.

Budeme cd do nginx-1.18.0 priečinok na konfiguráciu dynamického modulu Brotli.

[chránené e-mailom]: ~ $ cd nginx-1.18.0 /
[chránené e-mailom]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli

Poznámka: Počas konfigurácie sa môže zobraziť nasledujúca chyba

./ configure: error: modul prepisovania HTTP vyžaduje knižnicu PCRE.
Modul môžete deaktivovať pomocou --without-http_rewrite_module
alebo nainštalujte knižnicu PCRE do systému alebo vytvorte knižnicu PCRE
staticky zo zdroja s nginx pomocou --with-pcre = možnosť.

V takom prípade spustite nasledujúci príkaz na inštaláciu knižnice pcre

[chránené e-mailom]: ~ $ sudo apt-get install libpcre3-dev -y

Zostavenie modulu

Použijeme urobiť príkaz na vytvorenie a modulov priečinok vo vnútri nginx-1.18.0 adresár.

[chránené e-mailom]: ~ $ sudo vytvoriť moduly

Používame cp príkaz kopírovať ngx_http_brotli *.tak súbory z nginx-1.18.0 / obj priečinok do priečinka modulov.

[chránené e-mailom]: ~ $ cd / nginx-1.18.0 / obj /
[chránené e-mailom]: ~ $ sudo cp  ngx_http_brotli *.tak / usr / share / nginx / modules

Teraz uveďte obsah súborov pomocou je príkaz. Všimnete si, že sa skladá z dvoch rôznych súborov modulov, t.j.e.:

[chránené e-mailom]: ~ $ ls ngx_http_brotli *.tak
ngx_http_brotli_filter_module.tak
ngx_http_brotli_static_module.tak
  • Pravidelný modul Brotli: Modul ngx_http_brotli_filter_module.takže modul komprimuje všetky súbory za behu, a preto vyžaduje viac výpočtových zdrojov
  • Statický modul Brotli: Modul ngx_http_brotli_static_module.takže modul umožňuje zobrazovať predkomprimované statické súbory, a teda menej náročné na zdroje.

Teraz použite svoj obľúbený editor na otvorenie / etc / nginx / nginx.conf súbor na pridanie zavádzacích modulov Brotli na spustenie konfigurácie Brotli, vrátane nasledujúcich riadkov:

[chránené e-mailom]: ~ $ sudo vim / etc / nginx / nginx.konf
# Načítanie modulu
load_module "modules / ngx_http_brotli_filter_module.takže ";
load_module "modules / ngx_http_brotli_static_module.takže ";

Zahrnieme aj cesty konfiguračných priečinkov / etc / nginx / conf.d / *.konf

a / usr / share / nginx / modules / *.konf vo vyššie uvedenom súbore, ako napríklad:

http
# Zahrnúť priečinky s konfiguráciami
zahrnúť / etc / nginx / conf.d / *.conf;
zahrnúť / usr / share / nginx / modules / *.conf;

Ak chcete pridať konfiguráciu Brotli, otvorte / etc / nginx / conf.d / brotli.konf

súbor v vim editora a povoľte Brotli nastavením nasledujúcich konfiguračných smerníc:

brotli on;
brotli_static on;
brotli_comp_level 6;
brotli_types application / rss + xml application / xhtml + xml
text / css text / obyčajný;

brotli off | zapnuté”Hodnota povoľuje alebo zakazuje dynamickú alebo priebežnú kompresiu obsahu.

brotli_ static na ' umožňuje serveru Nginx skontrolovať, či predkomprimované súbory s .br rozšírenia existujú alebo neexistujú. Toto nastavenie môžeme tiež zmeniť na jednu z možností vypnutý alebo vždy. The vždy hodnota umožňuje serveru odoslať predkomprimovaný obsah bez potvrdenia, či to prehliadač podporuje alebo nie. Pretože Brotli je náročný na zdroje, je tento modul najvhodnejší na obmedzenie situácií s úzkym hrdlom.

brotli_comp_level 6”Smernica nastavuje úroveň kvality dynamickej kompresie na 6. Môže sa pohybovať od 0 do 11.

Nakoniec povoľte dynamickú kompresiu pre konkrétne typy MIME, zatiaľ čo textové / html odpovede sa vždy komprimujú. Predvolená syntax pre túto smernicu je brotli_types [typ MIME]. Viac informácií o konfiguračnej smernici nájdete na stránkach Github.

Uložte zmeny a reštartujte službu Nginx zadaním “Sudo service restart nginx” a všetko je hotové.

Záver

Po zmenách si všimnete zjavné vylepšenia v metrikách výkonu. Má však miernu nevýhodu zvýšeného zaťaženia procesora v špičkách. Aby ste sa vyhli takýmto situáciám, sledujte využitie procesora; ak dosiahne 100% pravidelne, môžeme využiť veľa možností podľa našich preferencií, napríklad prezentovať predkomprimovaný alebo statický obsah, znížiť úroveň kompresie a vypnúť priebežnú kompresiu.

Top 5 ergonomických produktov pre počítačové myši pre Linux
Spôsobuje dlhodobé používanie počítača bolesť zápästia alebo prstov? Trpíte stuhnutými kĺbmi a neustále si musíte podávať ruky? Cítite pálivú bolesť z...
Ako zmeniť nastavenie myši a touchpadu pomocou systému Xinput v systéme Linux
Väčšina distribúcií systému Linux sa štandardne dodáva s knižnicou „libinput“ na spracovanie vstupných udalostí v systéme. Dokáže spracovať vstupné ud...
S ovládaním pomocou myši X-Mouse môžete tlačidlá myši premapovať odlišne pre iný softvér
Možno budete potrebovať nástroj, ktorý by mohol zmeniť ovládanie myši pri každej aplikácii, ktorú používate. Ak je to váš prípad, môžete vyskúšať apli...