Instalace brotli modulu do nginx
Úvod
Co je brotli
Brotli je moderní kompresní algoritmus vyvinutý společností Google. Jeho hlavní funkce a charakteristiky jsou:
- Komprese dat: Brotli slouží ke zmenšení velikosti souborů a dat pro efektivnější ukládání a přenos.
- Vysoká účinnost: Nabízí lepší kompresní poměr než mnoho starších algoritmů jako gzip, zejména pro textové soubory.
- Zaměření na web: Je optimalizován pro kompresi webových zdrojů, jako jsou HTML, CSS a JavaScript soubory.
- Rychlost: Ačkoli je komprese pomalejší než u některých alternativ, dekomprese je velmi rychlá.
- Široká podpora: Je podporován většinou moderních webových prohlížečů.
- 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.
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