 Autor: [Tomasz Nowosielski](/autorzy/tomasz-nowosielski) Redaktor naczelny, analityk hostingu · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Brotli — kompresja w Nginx i Apache

# Brotli — kompresja w Nginx i Apache: lepsza niż gzip

Opublikowano: 10 kwietnia 2026 · Kategoria: Hosting / Wydajność

Brotli (algorytm Google z 2015 r.) jest nowszą alternatywą dla gzip i oferuje 15-25% lepszą kompresję przy podobnym czasie dekompresji. Obsługiwany przez wszystkie nowoczesne przeglądarki, wymagany do uzyskania top wyników w PageSpeed Insights. Oto jak go włączyć na Nginx i Apache.

## Brotli vs gzip — benchmarki

Typ pliku

Oryginał

gzip -9

Brotli -11

Zysk Brotli

HTML (100 KB)

100 KB

32 KB

26 KB

\-19%

CSS minified (50 KB)

50 KB

14 KB

11 KB

\-21%

JS bundle (200 KB)

200 KB

68 KB

58 KB

\-15%

JSON API response (20 KB)

20 KB

5.8 KB

4.6 KB

\-21%

JPEG (50 KB)

50 KB

49 KB

49 KB

~0%

## Nginx — instalacja ngx\_brotli

Nginx nie ma wbudowanego Brotli — musisz dodać moduł `ngx_brotli`. Najwygodniej zainstalować gotowy pakiet z repozytorium lub skompilować Nginx z modułem:

\# Metoda 1: Gotowy pakiet (Ubuntu/Debian z nginx.org)
apt install libnginx-mod-brotli

# Metoda 2: Kompilacja (dla kontroli nad wersją)
apt install -y libgoogle-perftools-dev git build-essential libpcre3-dev zlib1g-dev libssl-dev

# Sklonuj ngx\_brotli
cd /tmp
git clone --recurse-submodules https://github.com/google/ngx\_brotli
cd ngx\_brotli && git submodule update --init

# Sprawdź argumenty obecnej kompilacji Nginx
nginx -V 2>&1 | grep configure | sed 's/ --/\\n --/g'

# Rekompilacja z modułem (dodaj --add-dynamic-module)
cd /tmp
wget https://nginx.org/download/nginx-$(nginx -v 2>&1 | cut -d/ -f2).tar.gz
tar xzf nginx-\*.tar.gz
cd nginx-\*/

# Tu skopiuj istniejące flagi z nginx -V i dodaj:
./configure \[istniejące-flagi\] --add-dynamic-module=/tmp/ngx\_brotli
make modules
cp objs/ngx\_http\_brotli\_filter\_module.so /etc/nginx/modules/
cp objs/ngx\_http\_brotli\_static\_module.so /etc/nginx/modules/

\# /etc/nginx/nginx.conf — załadowanie modułów (na górze pliku)
load\_module modules/ngx\_http\_brotli\_filter\_module.so;
load\_module modules/ngx\_http\_brotli\_static\_module.so;

# Konfiguracja Brotli w bloku http {}
http {
    # Brotli — kompresja dynamiczna
    brotli on;
    brotli\_comp\_level 6;         # 1-11, 6 = dobry balans
    brotli\_min\_length 256;       # Nie kompresuj małych plików
    brotli\_types
        text/plain
        text/css
        text/javascript
        text/xml
        text/x-component
        application/javascript
        application/json
        application/xml
        application/rss+xml
        application/atom+xml
        application/vnd.ms-fontobject
        image/svg+xml
        font/truetype
        font/opentype;

    # brotli\_static on — serwuj pre-skompresowane pliki .br
    # (jeśli istnieje plik.css.br, serwuj zamiast plik.css)
    brotli\_static on;

    # Zostaw gzip jako fallback
    gzip on;
    gzip\_vary on;
    gzip\_types text/plain text/css application/javascript application/json;
}

nginx -t && systemctl reload nginx

# Weryfikacja
curl -H "Accept-Encoding: br" -sI https://example.com | grep -i content-encoding
# Oczekiwane: content-encoding: br

## Pre-kompresja plików statycznych (poziom 11)

Dla plików statycznych (CSS, JS, HTML deploy) wygeneruj pliki `.br` offline z poziomem 11 — serwer je serwuje bez CPU overhead:

\# Instalacja narzędzia brotli CLI
apt install brotli

# Pre-kompresja jednego pliku
brotli --quality=11 --output=main.css.br main.css

# Pre-kompresja wszystkich CSS i JS w katalogu
find /var/www/html -type f \\( -name "\*.css" -o -name "\*.js" -o -name "\*.html" \\) -exec brotli --quality=11 {} \\;

# Skrypt do użycia po każdym deploymencie
#!/bin/bash
WEBROOT="/var/www/html"
find "$WEBROOT" -type f \\( -name "\*.css" -o -name "\*.js" -o -name "\*.svg" -o -name "\*.html" -o -name "\*.json" \\) | while read f; do
    brotli --quality=11 --output="${f}.br" "$f"
done
echo "Pre-kompresja Brotli zakończona"

## Apache — mod\_brotli

\# Instalacja i włączenie mod\_brotli (Ubuntu 20.04+)
apt install libbrotli1
a2enmod brotli
systemctl restart apache2

\# /etc/apache2/conf-available/brotli.conf
<IfModule mod\_brotli.c>
    AddOutputFilterByType BROTLI\_COMPRESS text/html text/plain text/xml text/css text/javascript
    AddOutputFilterByType BROTLI\_COMPRESS application/javascript application/json application/xml
    AddOutputFilterByType BROTLI\_COMPRESS application/rss+xml application/atom+xml
    AddOutputFilterByType BROTLI\_COMPRESS image/svg+xml font/opentype font/truetype

    # Nie kompresuj już skompresowanych plików
    SetEnvIfNoCase Request\_URI \\.(?:gif|jpe?g|png|webp|avif|mp4|mp3|woff2?)$ no-brotli

    BrotliCompressionQuality 6
    BrotliFilterNote Input brotli\_input\_size
    BrotliFilterNote Output brotli\_output\_size
    BrotliFilterNote Ratio brotli\_compression\_ratio
</IfModule>

a2enconf brotli
apache2ctl configtest && systemctl reload apache2

# Weryfikacja
curl -H "Accept-Encoding: br" -sI http://localhost/ | grep content-encoding

## CDN z obsługą Brotli

Jeśli używasz CDN, Brotli może działać bez żadnej konfiguracji serwera origin:

-   **Cloudflare** — Brotli włączone domyślnie (plan Free+). Speed → Optimization → Brotli: on. Cloudflare kompresuje pliki między Edge a użytkownikiem, niezależnie od serwera origin.
-   **BunnyCDN** — Brotli obsługiwany automatycznie przy włączonym Smart Optimization.
-   **Fastly** — wymaga włączenia w konfiguracji serwisu VCL.
-   **AWS CloudFront** — obsługuje Brotli od 2020 r. — włącz "Compress objects automatically" w distribution settings.

## Najczęstsze pytania

Ile Brotli oszczędza w porównaniu z gzip? +

Przy poziomie kompresji 11 (maksymalnym) Brotli osiąga 15-25% mniejszy rozmiar niż gzip przy poziomie 9. W praktyce (poziomy 4-6, balans szybkości/rozmiaru) różnica wynosi 10-20%. Największy zysk jest dla plików tekstowych: HTML -20%, CSS -18%, JS -15%. Dla plików binarnych (obrazy, wideo) Brotli nie daje przewagi — te pliki powinny być już skompresowane (WebP, AVIF, H.264).

Czy Brotli jest obsługiwany przez wszystkie przeglądarki? +

Tak — Brotli (br) obsługują wszystkie nowoczesne przeglądarki: Chrome 49+, Firefox 44+, Safari 13+, Edge 15+. Przeglądarka informuje serwer o wsparciu przez nagłówek Accept-Encoding: gzip, deflate, br. Serwer odpowiada Content-Encoding: br jeśli ma Brotli, inaczej odpada do gzip. Brak wsparcia = automatyczny fallback, bez błędów.

Czy mogę włączyć Brotli na hostingu współdzielonym? +

Na hostingu współdzielonym nie masz dostępu do konfiguracji serwera, więc nie możesz instalować modułów Brotli. Możesz natomiast: (1) Wygenerować pliki .br statycznie (np. brotli --best plik.css → plik.css.br) i serwować je przez .htaccess, (2) Użyć CDN z obsługą Brotli (Cloudflare, BunnyCDN automatycznie konwertują), (3) Wybrać hosting z LiteSpeed, który ma wbudowane Brotli. VPS daje pełną kontrolę.

Który poziom kompresji Brotli wybrać? +

Dla dynamicznych odpowiedzi (PHP, API): poziom 4-6 — dobry balans szybkości kompresji i rozmiaru. Poziom 11 jest 100x wolniejszy od poziomu 1 i nadaje się tylko do pre-kompresji plików statycznych. Dla brotli\_static (pre-skompresowane pliki .br na dysku): użyj offline poziomu 11, serwer serwuje plik bez kompresji w czasie żądania — zero CPU overhead.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dostępem root — instalacja ngx\_brotli i pełna kontrola nad kompresją

VPS Brotli

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

CyberFolks

Hosting LiteSpeed z wbudowanym Brotli — bez konfiguracji serwera

LiteSpeed Brotli

[Aktywuj rabat →](/out/cyberfolks)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/cyberfolks)

Mikrus

Tani VPS do testowania Nginx z ngx\_brotli i benchmarków kompresji

Tani VPS

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

## Powiązane strony

-   [HTTP/3 i QUIC — konfiguracja Nginx i Caddy](/baza-wiedzy/http3-quic-konfiguracja)
-   [Core Web Vitals — optymalizacja LCP, CLS i INP](/baza-wiedzy/core-web-vitals-optymalizacja)
-   [Nginx — konfiguracja virtual hostów](/baza-wiedzy/nginx-vhost-konfiguracja)
-   [Wszystkie artykuły](/baza-wiedzy/)