Nginx

Hogyan engedélyezhetem a Brotli tömörítést az Nginx-ben

Hogyan engedélyezhetem a Brotli tömörítést az Nginx-ben

A Brotli-tömörítés egy általános célú tömörítési technika, amelyet a böngészők széles körben támogatnak. Összehasonlítható a jelenleg rendelkezésre álló tömörítési módszerekkel, mivel 20–26% -kal jobb tömörítési arányokat kínál. Ennek ellenére nem jó, ha a webszerver tömörített szöveges erőforrásokat küld a Brotli algoritmussal.

Ebben a cikkben megtudhatjuk, hogyan működik a tömörítés a szerveren, és miért hasznos? Megtanuljuk továbbá az Nginx szerver telepítését és a szerverünk számára a Brotli tömörített fájlok biztosítását.

Háttér

A tömörítési technikák / algoritmusok a tartalom méretének csökkentésével javítják a webhely teljesítményét. Ezért a tömörített adatok alacsony terhelést és átviteli időt vesznek igénybe. Ennek azonban ára van. A szerverek rengeteg számítási erőforrást használnak a jobb tömörítési arány biztosítása érdekében. Ennélfogva annál jobb, drágább. Tehát nagy erőfeszítéseket tesz a tömörítési formátumok javítása a minimális CPU-ciklusok felhasználása mellett.

Mostanra a legpotenciálisabb tömörítési formátumot tömörítették. A közelmúltban a gzip-et egy új tömörítési algoritmus váltja fel, Brotli néven. Ez egy fejlett tömörítési algoritmus, amely Huffman kódolásból, az L77 algoritmusból és a kontextus modellezéséből áll. Ezzel szemben a Gzip a Deflate algoritmusra épül.

A veszteségmentes tömörítési formátum, amelyet a Google tervezett, szorosan összefügg a leeresztett tömörítési formátummal. Mindkét tömörítési módszer csúszó ablakokat használ a visszahivatkozásokhoz. A Brotli csúszóablak mérete 1 KB és 16 MB között mozog. Ezzel szemben a Gzip rögzített ablakmérete 32 KB. Ez azt jelenti, hogy Brotli ablaka 512-szer nagyobb, mint a deflate ablak, ami nem releváns, mivel a 32 KB-nál nagyobb szövegfájlok ritkán vannak a webszervereken.

A kiszolgálótömörítés kompatibilitása fontos

Amikor letöltünk egy fájlt a böngészőből, a böngésző fejlécen keresztül kéri a szervert, hogy milyen tömörítést támogat. Például, ha a böngésző támogatja gzip és kienged kibontani. Ezeket az opciókat hozzáadja a Elfogadás-kódolás, fejléc, i.e.,

Accept-Encoding = ”deflate, gzip”

Ezért azok a böngészők, amelyek nem támogatják ezeket a formátumokat, nem veszik fel őket a fejlécbe. Amikor a szerver válaszol a tartalommal, fejlécen keresztül közli a böngészővel a tömörítési formátumot, Tartalomkódolás. Ezért, ha támogatja a gzip-t, akkor a fejléc így néz ki:

Content-Encoding = "gzip"

Az olyan böngészők fejlécei, mint a Firefox, amelyek támogatják a Brotli tömörítést, és a webszerver, amelyekbe Brotli modul van telepítve, így néz ki:

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

Ezért, ha a böngésző a legjobb tömörítési formátumot használja, és a webszerver nem, akkor ez nem jó, mivel a webszerver nem küldi vissza a fájlokat az előnyben részesített tömörítési algoritmussal. Ezért fontos a tömörítő modul telepítése a webszerverhez.

Szerver telepítése

Mielőtt továbblépnénk a Brotli konfigurációval, beállítjuk az Nginx szerverünket. Azelőtt sudo apt-get frissítés az Ubuntu terjesztést, és írja be a következő parancsokat a bash terminálon.

[e-mail védett]: ~ $ sudo apt-get update
[e-mail védett]: ~ $ sudo apt-get install nginx -y
[e-mail védett]: ~ $ sudo service nginx start

A Brotli-tömörítés engedélyezéséhez az Nginx-ben lefordítjuk a .tehát a modulok az Nginx verzió részleteinek megfelelően. Mint látható, a következő parancs beírásával az Nginx verzió jelenik meg:

[e-mail védett]: ~ $ nginx -v
nginx verzió: nginx / 1.18.0 (Ubuntu)

Használja a wget parancs az nginx verzió részleteivel együtt a forráskód letöltéséhez az Nginx webhelyéről.

[e-mail védett]: ~ $ wget https: // nginx.org / letöltés / nginx-1.18.0.kátrány.gz
--2021-02-07 02: 57: 33-- https: // nginx.org / letöltés / nginx-1.18.0.kátrány.gz
Az nginx megoldása.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Csatlakozás az nginx-hez.org (nginx.org) | 3.125.197.172 |: 443 ... csatlakoztatva.
HTTP kérés elküldve, válaszra vár ... 200 OK
Hossz: 1039530 (1015K) [alkalmazás / oktett-adatfolyam]
Mentés ide: 'nginx-1.18.0.kátrány.gz '
nginx-1.18.0.kátrány.gz 100% [================================================= ====================>] 1015K 220KB / s 4-ben.8s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.kátrány.gz 'mentve [1039530/1039530]

Ezt a forráskódot használjuk a fordításhoz *.tehát bináris fájlok a Brotli-tömörítéshez. Bontsa ki a fájlt a következő paranccsal.

[e-mail védett]: ~ $ tar xzf nginx-1.18.0.kátrány.gz

Brotli modul konfigurálása

Most a Google kiadta a Brotli modult az Nginx számára. Git-klónozzuk a modult a Google tárából.

[e-mail védett]: ~ $ git klón https: // github.com / google / ngx_brotli - rekurzív.

Mi fogunk CD ba,-be nginx-1.18.0 mappa a dinamikus Brotli modul konfigurálásához.

[e-mail védett]: ~ $ cd nginx-1.18.0 /
[e-mail védett]: ~ $ sudo ./ configure --with-compat --add-dynamic-module =… / ngx_brotli

Megjegyzés: A konfigurálás során a következő hibát kaphatja meg

./ configure: error: A HTTP átírási modulhoz PCRE könyvtár szükséges.
A modult letilthatja a --without-http_rewrite_module használatával
opciót, vagy telepítse a PCRE könyvtárat a rendszerbe, vagy építse fel a PCRE könyvtárat
statikusan a forrásból nginx-szel a -with-pcre = használatával választási lehetőség.

Ebben az esetben futtassa a következő parancsot a pcre könyvtár telepítéséhez

[e-mail védett]: ~ $ sudo apt-get install libpcre3-dev -y

Modul összeállítása

A készítsen parancsot a modulok mappát az nginx-1 belsejében.18.0 könyvtár.

[email protected]: ~ $ sudo make modulok

Használjuk a cp parancs a másoláshoz ngx_http_brotli *.így fájlok a nginx-1.18.0 / objs mappát a modulok mappába.

[e-mail védett]: ~ $ cd / nginx-1.18.0 / objs /
[e-mail védett]: ~ $ sudo cp  ngx_http_brotli *.így / usr / share / nginx / modules

Most sorolja fel a fájlok tartalmát a ls parancs. Észre fogja venni, hogy két különböző modulfájlból áll, azaz.e.:

[e-mail védett]: ~ $ ls ngx_http_brotli *.így
ngx_http_brotli_filter_module.így
ngx_http_brotli_static_module.így
  • Rendszeres Brotli modul: Az ngx_http_brotli_filter_module.így a modul menet közben tömöríti az összes fájlt, és ezért több számítási erőforrást igényel
  • Statikus Brotli modul: Az ngx_http_brotli_static_module.így a modul lehetővé teszi előre tömörített statikus fájlok kiszolgálását, így kevésbé erőforrás-igényes.

Most a kedvenc szerkesztőjével nyissa meg az / etc / nginx / nginx fájlt.conf fájl a Brotli betöltési modulok hozzáadásához a Brotli konfigurálásának megkezdéséhez a következő sorok hozzáadásával:

[e-mail védett]: ~ $ sudo vim / etc / nginx / nginx.konf
# Modul betöltése szakasz
load_module "modulok / ngx_http_brotli_filter_module.így";
load_module "modulok / ngx_http_brotli_static_module.így";

A konfigurációs mappák elérési útjait is tartalmazza / etc / nginx / conf.d / *.konf

és / usr / share / nginx / modules / *.konf a fenti fájlban, például:

http
# Tartalmazza a konfigurációs mappákat
tartalmazza / etc / nginx / conf.d / *.konf;
include / usr / share / nginx / modules / *.konf;

A Brotli konfiguráció hozzáadásához nyissa meg az / etc / nginx / conf fájlt.d / brotli.konf

fájl a vim szerkesztő és engedélyezze a Brotli-t a következő konfigurációs irányelvek beállításával:

brotli on;
brotli_static on;
brotli_comp_level 6;
brotli_types alkalmazás / rss + xml alkalmazás / xhtml + xml
text / css text / plain;

A "brotli off | be”Érték engedélyezi vagy letiltja a tartalom dinamikus vagy menet közbeni tömörítését.

A 'brotli_ static on ' lehetővé teszi az Nginx szerver számára, hogy ellenőrizze, hogy a .br kiterjesztések léteznek vagy sem. Ezt a beállítást opcióvá is alakíthatjuk ki vagy mindig. A mindig Az érték lehetővé teszi, hogy a kiszolgáló előre tömörített tartalmat küldjön anélkül, hogy megerősítené, hogy a böngésző támogatja-e vagy sem. Mivel a Brotli erőforrás-igényes, ez a modul a legalkalmasabb a szűk keresztmetszetek csökkentésére.

A "brotli_comp_level 6”Irányelv a dinamikus tömörítés minőségi szintjét 6-ra állítja. 0 és 11 között lehet.

Végül engedélyezze a dinamikus tömörítést bizonyos MIME típusoknál, míg a szöveges / html válaszok mindig tömörítve vannak. Ennek az irányelvnek az alapértelmezett szintaxisa a brotli_types [mime típus]. A konfigurációs irányelvről a Githubon talál további információt.

Mentse a módosításokat, gépeléssel indítsa újra az Nginx szolgáltatást „Sudo service restart nginx” és mindez kész.

Következtetés

A változások után észrevehet néhány nyilvánvaló javulást a teljesítménymutatókban. Ennek azonban van némi hátránya a csúcsidőben megnövekedett CPU-terhelés miatt. Az ilyen helyzetek elkerülése érdekében figyelje a CPU használatát; ha rendszeresen eléri a 100% -ot, számos lehetőséget használhatunk a preferenciáinknak megfelelően, például előre tömörített vagy statikus tartalom bemutatása, a tömörítési szint csökkentése és a menet közbeni tömörítés kikapcsolása.

Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...
Sid Meier Civilization VI letöltése és lejátszása Linuxon
Bevezetés a játékba A Civilization 6 egy modern felvétel a Age of Empires játékok sorozatában bevezetett klasszikus koncepcióra. Az ötlet meglehetősen...