Nginx

Jak povolit kompresi Brotli v Nginx

Jak povolit kompresi Brotli v Nginx

Brotliho komprese je obecná kompresní technika široce podporovaná napříč prohlížeči. Je srovnatelný s aktuálně dostupnými kompresními metodami, protože nabízí o 20–26% lepší kompresní poměry. Nicméně to není dobré, pokud webový server neposílá komprimované textové zdroje s algoritmem Brotli.

V tomto článku se dozvíme, jak funguje komprese na serveru a proč je užitečná? Naučíme se také instalovat server Nginx a přimět náš server, aby poskytoval komprimované soubory Brotli.

Pozadí

Techniky / algoritmy komprese zlepšují výkon webu snížením velikosti obsahu. Z tohoto důvodu trvá komprimovaná data nízkou zátěž a čas přenosu. Má však svou cenu. Servery využívají mnoho výpočetních zdrojů k zajištění lepší rychlosti komprese. Proto, tím lépe, dražší. Velké úsilí je tedy věnováno vylepšování kompresních formátů při využití minimálních cyklů CPU.

Nyní byl nejpotenciálnější kompresní formát gzipován. Nedávno byl gzip nahrazen novým kompresním algoritmem známým jako Brotli. Jedná se o pokročilý kompresní algoritmus složený z Huffmanova kódování, algoritmu L77 a kontextového modelování. Naproti tomu je Gzip postaven na algoritmu Deflate.

Bezztrátový kompresní formát navržený společností Google úzce souvisí s vyfouknutím kompresního formátu. Obě metody komprese používají pro zpětné odkazy posuvná okna. Velikost posuvného okna Brotli se pohybuje od 1 kB do 16 MB. Naproti tomu má Gzip pevnou velikost okna 32 kB. To znamená, že okno Brotli je 512krát větší než okno vyfouknutí, což není relevantní, protože textové soubory větší než 32 KB jsou na webových serverech zřídka.

Kompatibilita s kompresí serveru je důležitá

Kdykoli stáhneme soubor z prohlížeče, prohlížeč požádá server, jaký typ komprese podporuje prostřednictvím záhlaví. Například pokud prohlížeč podporuje gzip a vyfouknout dekomprimovat. Přidá tyto možnosti do svého Přijmout-kódování, záhlaví, i.E.,

Accept-Encoding = ”vyfouknout, gzip”

Prohlížeče, které tyto formáty nepodporují, je tedy nezahrnou do záhlaví. Když server odpoví obsahem, informuje prohlížeč o kompresním formátu pomocí záhlaví, Kódování obsahu. Pokud tedy podporuje gzip, pak záhlaví vypadá takto:

Content-Encoding = ”gzip”

Záhlaví prohlížečů, jako je Firefox, které podporují kompresi Brotli, a webový server, na kterém je nainstalován modul Brotli, vypadají takto:

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

Pokud tedy prohlížeč používá nejlepší kompresní formát a webový server nikoli, není to dobré, protože webový server neodesílá soubory s preferovaným kompresním algoritmem. Proto je důležité nainstalovat kompresní modul pro webový server.

Instalace serveru

Než budeme pokračovat v konfiguraci Brotli, nastavíme náš server Nginx. Před tím sudo aktualizace apt-get distribuci Ubuntu a zadejte následující příkazy v terminálu bash.

[chráněno e-mailem]: ~ $ sudo apt-get aktualizace
[chráněno e-mailem]: ~ $ sudo apt-get install nginx -y
[chráněno e-mailem]: ~ $ sudo služba nginx start

Abychom povolili Brotliho kompresi v Nginx, sestavíme naši .takže moduly podle našich podrobností o verzi Nginx. Jak je znázorněno, zadáním následujícího příkazu se vygeneruje verze Nginx:

[chráněno e-mailem]: ~ $ nginx -v
verze nginx: nginx / 1.18.0 (Ubuntu)

Použijte wget pomocí příkazu spolu s podrobnostmi o verzi nginx stáhněte zdrojový kód z webu Nginx.

[chráněno e-mailem]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.dehet.gz
--2021-02-07 02:57:33 - https: // nginx.org / download / nginx-1.18.0.dehet.gz
Řešení nginx.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Připojování k nginx.org (nginx.org) | 3.125.197.172 |: 443… připojeno.
Žádost HTTP odeslána, čeká na odpověď ... 200 OK
Délka: 1039530 (1015K) [aplikace / oktetový proud]
Ukládání do: 'nginx-1.18.0.dehet.gz '
nginx-1.18.0.dehet.gz 100% [============================================== =====================>] 1015 kB 220 kB / s za 4.8 s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.dehet.gz 'uloženo [1039530/1039530]

Tento zdrojový kód použijeme ke kompilaci *.takže binární soubory pro Brotliho kompresi. Nyní extrahujte soubor pomocí následujícího příkazu.

[chráněno e-mailem]: ~ $ tar xzf nginx-1.18.0.dehet.gz

Konfigurace modulu Brotli

Nyní Google vydal modul Brotli pro Nginx. Git-klonujeme modul z úložiště Google.

[chráněno e-mailem]: ~ $ git clone https: // github.com / google / ngx_brotli - rekurzivní.

Budeme CD do nginx-1.18.0 složku pro konfiguraci dynamického modulu Brotli.

[chráněno e-mailem]: ~ $ cd nginx-1.18.0 /
[chráněno e-mailem]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli

Poznámka: Během konfigurace se může zobrazit následující chyba

./ configure: error: modul přepsání HTTP vyžaduje knihovnu PCRE.
Modul můžete buď deaktivovat pomocí --without-http_rewrite_module
nebo nainstalovat knihovnu PCRE do systému nebo vytvořit knihovnu PCRE
staticky ze zdroje s nginx pomocí --with-pcre = volba.

V takovém případě spusťte následující příkaz a nainstalujte knihovnu pcre

[chráněno e-mailem]: ~ $ sudo apt-get install libpcre3-dev -y

Kompilace modulů

Budeme používat udělat příkaz k vytvoření moduly složka uvnitř nginx-1.18.0 adresář.

[email protected]: ~ $ sudo make modules

Používáme str příkaz ke kopírování ngx_http_brotli *.tak soubory z nginx-1.18.0 / obj složku do složky modulů.

[chráněno e-mailem]: ~ $ cd / nginx-1.18.0 / obj /
[chráněno e-mailem]: ~ $ sudo cp  ngx_http_brotli *.tak / usr / share / nginx / modules

Nyní uveďte obsah souborů pomocí je příkaz. Všimnete si, že se skládá ze dvou různých souborů modulů, tj.E.:

[chráněno e-mailem]: ~ $ 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šechny soubory za běhu, a proto vyžaduje více výpočetních zdrojů
  • Statický modul Brotli: Modul ngx_http_brotli_static_module.takže modul umožňuje zobrazovat předem komprimované statické soubory, tedy méně náročné na zdroje.

Nyní použijte svůj oblíbený editor k otevření / etc / nginx / nginx.soubor conf pro přidání zaváděcích modulů Brotli k zahájení konfigurace Brotli včetně následujících řádků:

[chráněno e-mailem]: ~ $ sudo vim / etc / nginx / nginx.konf
# Načíst sekci modulu
load_module "modules / ngx_http_brotli_filter_module.tak";
load_module "modules / ngx_http_brotli_static_module.tak";

Zahrneme také cesty konfiguračních složek / etc / nginx / conf.d / *.konf

a / usr / share / nginx / modules / *.konf ve výše uvedeném souboru, jako například:

http
# Zahrnout složky s konfiguracemi
zahrnout / etc / nginx / conf.d / *.conf;
zahrnout / usr / share / nginx / modules / *.conf;

Chcete-li přidat konfiguraci Brotli, otevřete soubor / etc / nginx / conf.d / nevěstinec.konf

soubor v vim editor a povolte Brotli nastavením následujících konfiguračních směrnic:

brotli on;
brotli_static zapnuto;
brotli_comp_level 6;
brotli_types application / rss + xml application / xhtml + xml
text / css text / prostý;

brotli off | zapnuto”Hodnota povoluje nebo zakazuje dynamickou nebo průběžnou kompresi obsahu.

'brotli_ static na ' umožňuje serveru Nginx zkontrolovat, zda předkomprimované soubory s .br rozšíření existují nebo neexistují. Toto nastavení můžeme také změnit na možnost vypnuto nebo vždy. The vždy value umožňuje serveru odesílat předkomprimovaný obsah bez potvrzení, zda to prohlížeč podporuje nebo ne. Vzhledem k tomu, že Brotli je náročná na zdroje, je tento modul nejvhodnější ke snížení úzkých situací.

brotli_comp_level 6”Směrnice nastavuje úroveň kvality dynamické komprese na 6. Může se pohybovat od 0 do 11.

Nakonec povolte dynamickou kompresi pro konkrétní typy MIME, zatímco textové / html odpovědi jsou vždy komprimovány. Výchozí syntaxe pro tuto směrnici je brotli_types [typ mime]. Další informace o konfigurační směrnici najdete na Githubu.

Uložte změny a restartujte službu Nginx zadáním „Sudo service restart nginx“ a je to hotové.

Závěr

Po změnách si všimnete některých zjevných vylepšení v metrikách výkonu. Přichází však s mírnou nevýhodou zvýšeného zatížení CPU ve špičkách. Abyste se těmto situacím vyhnuli, sledujte využití CPU; pokud dosáhne 100% pravidelně, můžeme využít mnoho možností podle našich preferencí, jako je prezentace předkomprimovaného nebo statického obsahu, snížení úrovně komprese a vypnutí on-the-fly komprese, mezi mnoha.

Jak změnit velikost, barvu a schéma kurzoru myši a kurzoru v systému Windows 10
Ukazatel myši a kurzor ve Windows 10 jsou velmi důležité aspekty operačního systému. To lze říci i pro jiné operační systémy, takže ve skutečnosti nej...
Hry Zdarma a open source herní motory pro vývoj linuxových her
Zdarma a open source herní motory pro vývoj linuxových her
Tento článek pokryje seznam bezplatných a otevřených herních enginů, které lze použít pro vývoj 2D a 3D her v systému Linux. Existuje mnoho takových h...
Hry Výukový program Shadow of the Tomb Raider pro Linux
Výukový program Shadow of the Tomb Raider pro Linux
Shadow of the Tomb Raider je dvanáctý přírůstek do série Tomb Raider - série akčních adventur vytvořená Eidosem Montrealem. Tato hra byla docela dobře...