Instalace brotli modulu do nginx

Vytvořeno: 
10. 8. 2024
22. 8. 2024
Kategorie: 
Autor: 
Jacob Korec
Moderní kompresní algoritmus vyvinutý společností Google. Brotli zmenšuje velikosti souborů pro efektivnější ukládání a přenos. Jinak řečeno může mít i na svědomí lepší performance rank.

Úvod

Co je brotli

Brotli je moderní kompresní algoritmus vyvinutý společností Google. Jeho hlavní funkce a charakteristiky jsou:

  1. Komprese dat: Brotli slouží ke zmenšení velikosti souborů a dat pro efektivnější ukládání a přenos.
  2. Vysoká účinnost: Nabízí lepší kompresní poměr než mnoho starších algoritmů jako gzip, zejména pro textové soubory.
  3. Zaměření na web: Je optimalizován pro kompresi webových zdrojů, jako jsou HTML, CSS a JavaScript soubory.
  4. Rychlost: Ačkoli je komprese pomalejší než u některých alternativ, dekomprese je velmi rychlá.
  5. Široká podpora: Je podporován většinou moderních webových prohlížečů.
  6. Open source: Algoritmus je volně dostupný pro použití a implementaci.

Proč brotli

Brotli se často používá pro optimalizaci webových stránek ke zrychlení načítání a snížení množství přenesených dat, což je zvláště užitečné pro mobilní zařízení a pomalejší internetová připojení.

Zjednodušeně

Používám jej pro lepší výkon/performance rank v lighthouse.
file

Co je cílem tohoto postupu?

Implementace brotli do již fungujícího nginx a spuštění komprese souborů o velikosti > 256 znaků.

Prostředí

OS: Debian GNU/Linux 12 (bookworm)
Aplikace: nginx version: nginx/1.22.1

Instalace

Následující postup implementuje brotli modul do nginx konfigurace

1. Instalace potřebných závislostí

sudo apt update
sudo apt install git build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev libbrotli-dev

2. Stáhneme nginx a brotli

nginx-1.21.1 nahraď svojí verzí

cd /tmp
wget https://nginx.org/download/nginx-1.21.1.tar.gz
tar xzf nginx-1.21.1.tar.gz
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
cd ..

3. Zkompilujeme nginx s modulem brotli

cd nginx-1.22.1
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules

4. Zkopírujeme vytvořené moduly do adresáře s moduly Nginx

sudo cp objs/ngx_http_brotli_filter_module.so /usr/lib/nginx/modules/
sudo cp objs/ngx_http_brotli_static_module.so /usr/lib/nginx/modules/

5. Upravíme nginx.conf

sudo nano /etc/nginx/nginx.conf

Na začátek souboru přidej následující

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

Konfigurace webové stránky a spuštění

Základní příkazy

Do konfigurace webové stránky `/etc/nginx/sites-available/<konfigurace>` vlož následující řádky

brotli on;
brotli_comp_level 6;
brotli_min_length 256;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml+rss
text/javascript;

Vysvětlení

Příklad nginx konfigurace

server {
    listen 80;
    server_name example.com;

    root /var/www/example.com;
    index index.html;

    gzip on;
    gzip_comp_level 6;
    gzip_min_length 256;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml
    application/xml+rss
    text/javascript application/font-woff2;
    gzip_vary on;

    # BROTLI ZACATEK
    brotli on;
    brotli_comp_level 6;
    brotli_min_length 256;
    brotli_types text/plain text/css application/json application/javascript text/xml application/xml+rss
    text/javascript;
    # BROTLI KONEC

    location / {
        try_files $uri $uri/ /index.html;
    }

    error_page 404 /404.html;
    }

Příkazy

Direktiva Popis
brotli on; Zapnutí brotli komprese.
brotli_comp_level 6; Nastavuje úroveň komprese Brotli na 6. Rozsah je obvykle od 0 do 11, kde 0 je nejrychlejší, ale nejméně efektivní, a 11 je nejpomalejší, ale nejvíce efektivní. Úroveň 6 je střední hodnota, která nabízí dobrý kompromis mezi rychlostí a účinností komprese.
brotli_min_length 256; Toto určuje minimální velikost odpovědi v bajtech, od které se začne používat Brotli komprese. V tomto případě se Brotli komprese použije pouze pro odpovědi větší než 256 bajtů.
brotli_types text/plain text/css application/json application/javascript text/xml application/xml+rss text/javascript; Tato direktiva specifikuje MIME typy souborů, na které se má Brotli komprese aplikovat.

Spuštění na webu

Test

Po uložení konfigurace souboru otestuj, jestli je brotli správně nastaveno

sudo nginx -t

Pokud instalace a nastavení proběhlo bez chyb, mělo by se vypsat něco podobného

$ sudo nginx -t
2024/08/12 12:31:58 [info] 19208#19208: Using 116KiB of shared memory for nchan in /etc/nginx/nginx.conf:65
2024/08/12 12:31:58 [info] 19208#19208: Using 131072KiB of shared memory for nchan in
/etc/nginx/nginx.conf:65
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Restart nginx

Pokud nginx test proběhl úspěšně, proveď restart

sudo systemctl restart nginx

Test, jestli brotli komprimuje

Do terminálu v počítači (nemusí být na serveru) zadej:

curl -H Accept-Encoding: br -I https://vasdomena.com

Pokud brotli komprimuje soubory, bude ve výpisu vypsán tento řádek:

Content-Encoding: br

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *