Nginx

Kā iespējot Brotli saspiešanu Nginx

Kā iespējot Brotli saspiešanu Nginx

Brotli saspiešana ir vispārēja saspiešanas tehnika, ko plaši atbalsta visas pārlūkprogrammas. Tas ir salīdzināms ar pašlaik pieejamajām saspiešanas metodēm, jo ​​piedāvā labākus saspiešanas koeficientus par 20–26%. Neskatoties uz to, tas nav labi, ja tīmekļa serveris nesūta saspiestus teksta resursus ar Brotli algoritmu.

Šajā rakstā mēs uzzināsim, kā saspiešana darbojas serverī un kāpēc tā ir noderīga? Mēs arī iemācīsimies instalēt Nginx serveri un panākt, lai mūsu serveris nodrošina saspiestus Brotli failus.

Priekšvēsture

Saspiešanas paņēmieni / algoritmi uzlabo vietnes veiktspēju, samazinot satura lielumu. Tādējādi saspiestajiem datiem ir maza slodze un pārsūtīšanas laiks. Tomēr tam ir cena. Lai nodrošinātu labāku saspiešanas līmeni, serveri izmanto daudz skaitļošanas resursu. Tādējādi, jo labāk, dārgi. Tāpēc tiek pieliktas lielas pūles, lai uzlabotu saspiešanas formātus, vienlaikus izmantojot minimālos procesora ciklus.

Tagad potenciālākais saspiešanas formāts bija gzip. Nesen gzip tiek aizstāts ar jaunu saspiešanas algoritmu, kas pazīstams kā Brotli. Tas ir uzlabots saspiešanas algoritms, kas sastāv no Huffmana kodēšanas, L77 algoritma un konteksta modelēšanas. Turpretī Gzip ir veidots uz Deflate algoritma.

Google izstrādātais bezzudumu kompresijas formāts ir cieši saistīts ar deflācijas saspiešanas formātu. Abās saspiešanas metodēs atsaucēm uz aizmuguri tiek izmantoti bīdāmie logi. Brotli bīdāmā loga izmērs svārstās no 1 KB līdz 16 MB. Turpretī Gzip fiksētais loga izmērs ir 32 KB. Tas nozīmē, ka Brotli logs ir 512 reizes lielāks nekā deflācijas logs, kas nav būtisks, jo teksta faili, kuru lielums pārsniedz 32 KB, reti atrodas tīmekļa serveros.

Svarīga ir servera saspiešanas saderība

Ikreiz, kad mēs lejupielādējam failu no pārlūkprogrammas, pārlūks pieprasa serverim, kāda veida saspiešanu tas atbalsta, izmantojot galveni. Piemēram, ja pārlūkprogramma atbalsta gzip un iztukšot lai atspiestu. Tas pievienos šīs opcijas savā Pieņemt-kodēšanu, galveni, t.i.e.,

Accept-Encoding = ”deflēt, gzip”

Tādējādi pārlūkprogrammās, kas neatbalsta šos formātus, tie netiks iekļauti galvenē. Kad serveris atbild ar saturu, caur galveni pārlūkprogrammai paziņo par saspiešanas formātu, Satura kodēšana. Tādējādi, ja tas atbalsta gzip, galvene izskatās šādi:

Content-Encoding = ”gzip”

Tādu pārlūkprogrammu kā Firefox, kas atbalsta Brotli saspiešanu, un tīmekļa servera, kurā ir instalēts Brotli modulis, galvenes izskatās šādi:

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

Tādējādi, ja pārlūkprogramma izmanto labāko saspiešanas formātu un tīmekļa serveris to nedara, tas nav labi, jo tīmekļa serveris nesūtīs atpakaļ failus ar vēlamo saspiešanas algoritmu. Tāpēc ir svarīgi instalēt tīmekļa servera saspiešanas moduli.

Servera instalēšana

Pirms virzīties uz priekšu ar Brotli konfigurāciju, mēs izveidosim savu Nginx serveri. Pirms tam sudo apt-get atjauninājums savu Ubuntu izplatīšanu un ierakstiet šīs komandas savā bash terminālā.

[aizsargāts pa e-pastu]: ~ $ sudo apt-get update
[aizsargāts ar e-pastu]: ~ $ sudo apt-get install nginx -y
[aizsargāts ar e-pastu]: ~ $ sudo service nginx start

Lai iespējotu Brotli saspiešanu Nginx, mēs apkoposim .tātad moduļi atbilstoši mūsu Nginx versijas detaļām. Kā parādīts, ierakstot šādu komandu, tiks izvadīta Nginx versija:

[e-pasts aizsargāts]: ~ $ nginx -v
nginx versija: nginx / 1.18.0 (Ubuntu)

Izmantojiet wget komandu kopā ar savu nginx versijas informāciju, lai lejupielādētu avota kodu no Nginx vietnes.

[e-pasts aizsargāts]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.darva.gz
--2021-02-07 02: 57: 33-- https: // nginx.org / download / nginx-1.18.0.darva.gz
Nginx atrisināšana.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Savienojums ar nginx.org (nginx.org) | 3.125.197.172 |: 443 ... savienots.
HTTP pieprasījums nosūtīts, gaida atbildi ... 200 OK
Garums: 1039530 (1015K) [lietojumprogramma / okteta straume]
Saglabāšana: 'nginx-1.18.0.darva.gz '
nginx-1.18.0.darva.gz 100% [================================================ ====================>] 1015K 220KB / s 4.8. gadi
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.darva.gz 'saglabāts [1039530/1039530]

Mēs izmantosim šo avota kodu * apkopošanai.tātad bināros failus Brotli saspiešanai. Tagad izvelciet failu, izmantojot šādu komandu.

[aizsargāts ar e-pastu]: ~ $ tar xzf nginx-1.18.0.darva.gz

Brotli moduļa konfigurācija

Tagad Google ir izlaidis modeli Brotli Nginx. Mēs klonēsim moduli no Google krātuves.

[e-pasts aizsargāts]: ~ $ git klons https: // github.com / google / ngx_brotli - rekursīvs.

Mēs būsim cd iekšā nginx-1.18.0 mapi, lai konfigurētu dinamisko Brotli moduli.

[aizsargāts ar e-pastu]: ~ $ cd nginx-1.18.0 /
[e-pasts aizsargāts]: ~ $ sudo ./ configure --with-compat - add-dynamic-module =… / ngx_brotli

Piezīme. Konfigurēšanas laikā var tikt parādīta šāda kļūda

./ configure: error: HTTP pārrakstīšanas modulim nepieciešama PCRE bibliotēka.
Varat vai nu atspējot moduli, izmantojot --without-http_rewrite_module
vai instalējiet sistēmā PCRE bibliotēku vai izveidojiet PCRE bibliotēku
statiski no avota ar nginx, izmantojot --with-pcre = opcija.

Tādā gadījumā palaidiet šo komandu, lai instalētu pcre bibliotēku

[e-pasts aizsargāts]: ~ $ sudo apt-get install libpcre3-dev -y

Moduļa sastādīšana

Mēs izmantosim veidot komandu izveidot moduļi mape nginx-1 iekšpusē.18.0 direktorijā.

[aizsargāts ar e-pastu]: ~ $ sudo make moduļi

Mēs izmantojam cp komandu kopēt ngx_http_brotli *.tātad failus no nginx-1.18.0 / objs mapi moduļu mapē.

[aizsargāts ar e-pastu]: ~ $ cd / nginx-1.18.0 / objs /
[e-pasts aizsargāts]: ~ $ sudo cp  ngx_http_brotli *.tātad / usr / share / nginx / moduļi

Tagad uzskaitiet failu saturu, izmantojot ls komandu. Jūs ievērosiet, ka tas sastāv no diviem dažādiem moduļu failiem, t.i.e.:

[e-pasts aizsargāts]: ~ $ ls ngx_http_brotli *.tātad
ngx_http_brotli_filter_module.tātad
ngx_http_brotli_static_module.tātad
  • Regulārs Brotli modulis: Ngx_http_brotli_filter_module.tāpēc modulis saspiež visus failus lidojuma laikā, un tāpēc tas prasa vairāk skaitļošanas resursu
  • Statiskais Brotli modulis: Ngx_http_brotli_static_module.tāpēc modulis ļauj tam apkalpot iepriekš saspiestus statiskos failus, tādējādi mazāk patērējot resursus.

Tagad izmantojiet savu iecienīto redaktoru, lai atvērtu / etc / nginx / nginx.conf fails, lai pievienotu Brotli ielādes moduļus, lai sāktu Brotli konfigurēšanu, iekļaujot šādas rindas:

[e-pasts aizsargāts]: ~ $ sudo vim / etc / nginx / nginx.konf
# Ielādēt moduļa sadaļu
load_module "moduļi / ngx_http_brotli_filter_module.tā ";
load_module "moduļi / ngx_http_brotli_static_module.tā ";

Mēs iekļausim arī konfigurācijas mapju ceļus / etc / nginx / conf.d / *.konf

un / usr / share / nginx / moduļi / *.konf iepriekš minētajā failā, piemēram:

http
# Iekļaut konfigurācijas mapes
ietver / etc / nginx / conf.d / *.konf;
iekļaut / usr / share / nginx / moduļus / *.konf;

Lai pievienotu Brotli konfigurāciju, atveriet / etc / nginx / conf.d / brotli.konf

failu vim redaktoru un iespējojiet Brotli, iestatot šādas konfigurācijas direktīvas:

brotli on;
brotli_static on;
brotli_comp_level 6;
brotli_types application / rss + xml application / xhtml + xml
text / css text / plain;

brotli izslēgts | ieslēgts”Vērtība iespējo vai atspējo satura saspiešanu dinamiski vai uzreiz.

The 'brotli_ static on ' ļauj Nginx serverim pārbaudīt, vai ar .br paplašinājumi pastāv vai nav. Šo iestatījumu mēs varam arī pārvērst par iespēju izslēgts vai vienmēr. The vienmēr vērtība ļauj serverim nosūtīt iepriekš saspiestu saturu, neapstiprinot, vai pārlūkprogramma to atbalsta vai nē. Tā kā Brotli prasa daudz resursu, šis modulis ir vispiemērotākais, lai mazinātu vājās vietas.

brotli_comp_level 6”Direktīva nosaka dinamiskās saspiešanas kvalitātes līmeni līdz 6. Tas var svārstīties no 0 līdz 11.

Visbeidzot, iespējojiet dinamisku saspiešanu konkrētiem MIME tipiem, turpretī teksta / HTML atbildes vienmēr tiek saspiestas. Šīs direktīvas noklusējuma sintakse ir brotli_types [mime type]. Plašāku informāciju par konfigurācijas direktīvu varat atrast vietnē Github.

Saglabājiet izmaiņas, restartējiet pakalpojumu Nginx, ierakstot “Sudo pakalpojums restart nginx” un tas viss ir izdarīts.

Secinājums

Pēc izmaiņām pamanīsit dažus acīmredzamus uzlabojumus veiktspējas rādītājos. Tomēr tas nāk ar nelielu trūkumu par paaugstinātu CPU slodzi pīķa laikā. Lai izvairītos no šādām situācijām, sekojiet procesora lietošanai; ja tas regulāri sasniedz 100%, mēs varam izmantot daudzas iespējas, piemēram, iepriekš saspiestu vai statisku saturu, pazemināt saspiešanas līmeni un izslēgt saspiešanu lidojuma laikā.

Kā parādīt OSD pārklājumu pilnekrāna Linux lietotnēs un spēlēs
Spēlējot pilnekrāna spēles vai lietojot lietotnes bez atrautības pilnekrāna režīmā, jūs varat izslēgt no attiecīgās sistēmas informācijas, kas redzama...
Top 5 spēļu tveršanas kartes
Mēs visi esam redzējuši un mīlējuši straumēšanas spēles pakalpojumā YouTube. PewDiePie, Jakesepticye un Markiplier ir tikai daži no labākajiem spēlētā...
Kā izstrādāt spēli Linux
Pirms desmit gadiem maz Linux lietotāju varētu paredzēt, ka viņu iecienītā operētājsistēma kādu dienu būs populāra spēļu platforma komerciālām videosp...