Nginx

Как да активирам компресията на Brotli в Nginx

Как да активирам компресията на Brotli в Nginx

Компресията на Brotli е техника за компресиране с общо предназначение, широко поддържана в браузърите. Той е сравним с наличните в момента методи за компресия, тъй като предлага 20-26% по-добри съотношения на компресия. Въпреки това не е добре, освен ако уеб сървърът не изпраща компресирани текстово базирани ресурси с алгоритъма на Brotli.

В тази статия ще научим как компресията работи в сървъра и защо е полезна? Също така ще се научим да инсталираме сървъра Nginx и ще накараме нашия сървър да предоставя компресирани файлове на Brotli.

Заден план

Техниките / алгоритмите за компресиране подобряват производителността на уебсайта чрез намаляване на размера на съдържанието. Следователно компресираните данни отнемат малко време на натоварване и трансфер. Той обаче има цена. Сървърите използват много изчислителни ресурси, за да осигурят по-добра степен на компресия. Следователно, колкото по-добре, толкова по-скъпо. Така се добавят много усилия за подобряване на форматите за компресия, като същевременно се използват минимални цикли на процесора.

Досега най-потенциалният формат за компресиране беше gzipped. Наскоро gzip се заменя с нов алгоритъм за компресия, известен като Brotli. Това е усъвършенстван алгоритъм за компресиране, съставен от кодиране на Huffman, алгоритъма L77 и моделиране на контекст. За разлика от това, Gzip е изграден върху алгоритъма Deflate.

Форматът за компресиране без загуби, проектиран от Google, е тясно свързан с формата за компресиране на дефлацията. И двата метода за компресиране използват плъзгащи се прозорци за обратно препращане. Размерът на плъзгащия се прозорец Brotli варира от 1 KB до 16MB. За разлика от това, Gzip има фиксиран размер на прозореца от 32KB. Това означава, че прозорецът на Brotli е 512 пъти по-голям от прозореца за дефлация, което не е от значение, тъй като текстовите файлове, по-големи от 32 KB, рядко се намират на уеб сървъри.

Съвместимостта на компресирането на сървъра е важна

Винаги, когато изтегляме файл от браузъра, браузърът иска от сървъра каква компресия поддържа чрез заглавка. Например, ако браузърът поддържа gzip и издухвам да се декомпресира. Той ще добави тези опции в своя Приемане-кодиране, заглавка, т.е.д.,

Accept-Encoding = ”дефлиране, gzip”

Следователно браузърите, които не поддържат тези формати, няма да ги включат в заглавката. Когато сървърът отговори със съдържанието, той казва на браузъра за формата на компресия чрез заглавка, Кодиране на съдържание. Следователно, ако поддържа gzip, тогава заглавката изглежда така:

Content-Encoding = ”gzip”

Заглавките на браузърите като Firefox, които поддържат компресия на Brotli и уеб сървъра, които имат инсталиран модул Brotli, изглеждат така:

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

Следователно, ако браузърът използва най-добрия формат за компресиране, а уеб сървърът не го прави, не е добре, тъй като уеб сървърът няма да изпрати обратно файловете с предпочитания алгоритъм за компресиране. Ето защо е важно да инсталирате модула за компресия за уеб сървъра.

Инсталиране на сървър

Преди да продължим напред с конфигурацията на Brotli, ще настроим нашия Nginx сървър. Преди това Судо apt-get update вашата дистрибуция на Ubuntu и въведете следните команди във вашия bash терминал.

[имейл защитен]: ~ $ sudo apt-get update
[имейл защитен]: ~ $ sudo apt-get install nginx -y
[имейл защитен]: ~ $ sudo service nginx start

За да активираме компресията на Brotli в Nginx, ще компилираме нашата .така модули според нашите подробности за версията на Nginx. Както е показано, въвеждането на следната команда ще изведе версията на Nginx:

[имейл защитен]: ~ $ nginx -v
nginx версия: nginx / 1.18.0 (Ubuntu)

Използвай wget команда заедно с подробностите за вашата версия на nginx, за да изтеглите изходния код от уебсайта на Nginx.

[имейл защитен]: ~ $ wget https: // nginx.org / download / nginx-1.18.0.катран.gz
--2021-02-07 02: 57: 33 - https: // nginx.org / download / nginx-1.18.0.катран.gz
Разрешаване на nginx.org (nginx.org) ... 3.125.197.172, 52.58.199.22, 2a05: d014: edb: 5702 :: 6,…
Свързване към nginx.org (nginx.org) | 3.125.197.172 |: 443 ... свързан.
Изпратена HTTP заявка в очакване на отговор ... 200 OK
Дължина: 1039530 (1015K) [приложение / октет-поток]
Запазване в: 'nginx-1.18.0.катран.gz '
nginx-1.18.0.катран.gz 100% [================================================= ====================>] 1015K 220KB / s за 4.8s
2021-02-07 02:57:38 (212 KB / s) - 'nginx-1.18.0.катран.gz 'запазено [1039530/1039530]

Ще използваме този изходен код за компилация *.така че двоични файлове за компресия на Brotli. Сега извлечете файла, като използвате следната команда.

[имейл защитен]: ~ $ tar xzf nginx-1.18.0.катран.gz

Конфигурация на модул Brotli

Сега Google пусна модула Brotli за Nginx. Ще git-клонираме модула от хранилището на Google.

[имейл защитен]: ~ $ git clone https: // github.com / google / ngx_brotli - рекурсивен.

Ние ще cd в nginx-1.18.0 папка за конфигуриране на динамичния модул Brotli.

[имейл защитен]: ~ $ cd nginx-1.18.0 /
[имейл защитен]: ~ $ sudo ./ configure --with-compat --add-dynamic-module = ... / ngx_brotli

Забележка: Може да получите следната грешка, докато конфигурирате

./ configure: грешка: модулът за пренаписване на HTTP изисква библиотеката PCRE.
Можете или да деактивирате модула, като използвате --without-http_rewrite_module
опция, или инсталирайте библиотеката PCRE в системата, или изградете библиотеката PCRE
статично от източника с nginx, като се използва --with-pcre = опция.

В този случай изпълнете следната команда, за да инсталирате pcre библиотеката

[имейл защитен]: ~ $ sudo apt-get install libpcre3-dev -y

Компилация на модули

Ще използваме направи команда за създаване на модули папка в nginx-1.18.0 директория.

[имейл защитен]: ~ $ sudo make модули

Ние използваме cp команда за копиране ngx_http_brotli *.така файлове от nginx-1.18.0 / objs папка към папката модули.

[имейл защитен]: ~ $ cd / nginx-1.18.0 / objs /
[имейл защитен]: ~ $ sudo cp  ngx_http_brotli *.така / usr / share / nginx / модули

Сега избройте съдържанието на файловете с помощта на ls команда. Ще забележите, че се състои от два различни модулни файла, т.е.д.:

[имейл защитен]: ~ $ ls ngx_http_brotli *.така
ngx_http_brotli_filter_module.така
ngx_http_brotli_static_module.така
  • Редовен модул Brotli: Модулът ngx_http_brotli_filter_filter.така модулът компресира всички файлове в движение и следователно изисква повече изчислителни ресурси
  • Статичен модул Brotli: Модулът ngx_http_brotli_static_module.така модулът му позволява да обслужва предварително компресирани статични файлове, следователно по-малко ресурсоемки.

Сега използвайте любимия си редактор, за да отворите / etc / nginx / nginx.conf файл, за да добавите модули за зареждане на Brotli, за да започнете конфигурацията на Brotli, като включите следните редове:

[имейл защитен]: ~ $ sudo vim / etc / nginx / nginx.конф
# Заредете модул раздел
load_module "модули / ngx_http_brotli_filter_module.така";
load_module "модули / ngx_http_brotli_static_module.така";

Ще включим и пътища на конфигурационни папки / etc / nginx / conf.д/*.конф

и / usr / share / nginx / modules / *.конф в горния файл като:

http
# Включете конфигурационни папки
включва / etc / nginx / conf.д/*.conf;
включва / usr / споделяне / nginx / модули / *.conf;

За да добавите конфигурацията на Brotli, отворете / etc / nginx / conf.г / бротли.конф

файл в vim редактор и активирайте Brotli, като зададете следните директиви за конфигуриране:

brotli on;
brotli_static на;
brotli_comp_level 6;
brotli_types application / rss + xml application / xhtml + xml
текст / css текст / обикновен;

brotli off | onСтойност позволява или деактивира динамично или бързо компресиране на съдържанието.

"brotli_ static на ' дава възможност на сървъра Nginx да провери дали предварително компресираните файлове с .br разширения съществуват или не. Също така можем да превърнем тази настройка в опция изключен или винаги. The винаги value позволява на сървъра да изпраща предварително компресирано съдържание, без да потвърждава дали браузърът го поддържа или не. Тъй като Brotli изисква много ресурси, този модул е ​​най-подходящ за намаляване на тесните ситуации.

6. brotli_comp_level 6Директивата определя нивото на динамично качество на компресия на 6. Може да варира от 0 до 11.

И накрая, разрешете динамично компресиране за специфични типове MIME, докато текстовите / html отговори винаги се компресират. Синтаксисът по подразбиране за тази директива е brotli_types [mime type]. Можете да намерите повече за конфигурационната директива на Github.

Запазете промените, рестартирайте услугата Nginx, като напишете “Sudo service restart nginx” и всичко е направено.

Заключение

След промените ще забележите някои очевидни подобрения в показателите за ефективност. Въпреки това, той идва с лек недостатък на увеличеното натоварване на процесора в пикови моменти. За да избегнете подобни ситуации, наблюдавайте използването на процесора; ако достигне 100% редовно, можем да използваме много опции според нашите предпочитания, като например представяне на предварително компресирано или статично съдържание, понижаване на нивото на компресия и изключване на компресията в движение, сред много.

Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...