Brotli-Kompression in NGINX aktivieren
Komprimieren Sie Ihre Inhalte 15-25% besser als mit gzip mit dem Brotli-Algorithmus von Google.
-
15-25% kleiner
Brotli erzielt bessere Kompressionsraten als gzip für Textinhalte
-
Universelle Unterstützung
Alle modernen Browser unterstützen Brotli (Chrome, Firefox, Safari, Edge)
-
Schnellere Seitenladezeiten
Kleinere Dateien = schnellere Downloads, insbesondere in Mobilfunknetzen
-
Geringere Bandbreitenkosten
Reduzieren Sie die Datenübertragungskosten mit besserer Kompression
Browser-Unterstützung
Brotli wird von 95%+ der Browser weltweit unterstützt:
| Browser | Brotli-Unterstützung |
|---|---|
| Chrome | ✅ Seit v50 (2016) |
| Firefox | ✅ Seit v44 (2016) |
| Safari | ✅ Seit v11 (2017) |
| Edge | ✅ Seit v15 (2017) |
| Opera | ✅ Seit v38 (2016) |
NGINX fällt automatisch auf gzip für ältere Browser zurück.
Schnelle Einrichtung
Schritt 1: Brotli-Modul installieren
# GetPageSpeed-Repository installieren
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
# Brotli-Modul installieren
dnf -y install nginx-module-brotli
Aktivieren Sie in /etc/nginx/nginx.conf:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Schritt 2: Brotli-Kompression konfigurieren
Erstellen Sie /etc/nginx/conf.d/brotli.conf:
# Brotli-Kompression aktivieren
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types
text/plain
text/css
text/javascript
text/xml
application/javascript
application/json
application/xml
application/xml+rss
application/xhtml+xml
application/atom+xml
application/rss+xml
application/x-javascript
application/x-font-ttf
application/x-font-opentype
application/vnd.ms-fontobject
font/ttf
font/otf
font/opentype
font/woff
font/woff2
image/svg+xml
image/x-icon;
NGINX neu laden:
nginx -t && systemctl reload nginx
Schritt 3: Überprüfen, ob es funktioniert
# Anfrage mit Brotli-Unterstützung
curl -sI -H 'Accept-Encoding: br' https://example.com | grep -i encoding
# Content-Encoding: br
# Größen vergleichen
curl -so /dev/null -w '%{size_download}' -H 'Accept-Encoding: gzip' https://example.com
# 45678
curl -so /dev/null -w '%{size_download}' -H 'Accept-Encoding: br' https://example.com
# 38912 (kleiner!)
Kompressionsstufen
| Stufe | Geschwindigkeit | Kompression | Anwendungsfall |
|---|---|---|---|
| 1-3 | Schnell | Niedriger | Hoher Verkehr, CPU-begrenzt |
| 4-6 | Ausgewogen | Gut | Die meisten Websites (empfohlen) |
| 7-9 | Langsam | Besser | Vorab komprimierte statische Assets |
| 10-11 | Sehr langsam | Beste | Nur Kompression zur Build-Zeit |
Empfehlung
Verwenden Sie Stufe 4-6 für dynamische Inhalte und Stufe 11 für vorab komprimierte statische Assets.
Statische Assets vorab komprimieren
Für maximale Leistung komprimieren Sie Dateien zur Build-Zeit:
# Brotli-CLI-Tool installieren
dnf -y install brotli
# Ihre statischen Dateien komprimieren
find /var/www/html -type f \( -name "*.css" -o -name "*.js" -o -name "*.html" -o -name "*.svg" \) \
-exec brotli -kf --best {} \;
Dies erstellt .br-Dateien neben den Originalen. NGINX serviert diese automatisch mit brotli_static on.
Größenvergleich
Echtweltbeispiel (jQuery 3.6.0 minifiziert):
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#009639', 'primaryTextColor': '#fff'}}}%%
pie showData
title Dateigrößenvergleich
"Original (89KB)" : 89
"Gzip (31KB)" : 31
"Brotli (27KB)" : 27
| Format | Größe | Einsparungen |
|---|---|---|
| Original | 89 KB | — |
| Gzip | 31 KB | 65% |
| Brotli | 27 KB | 70% |
Erweiterte Konfiguration
Gzip als Fallback beibehalten
# Brotli (Priorität)
brotli on;
brotli_comp_level 6;
# Gzip (Fallback)
gzip on;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/json;
Unterschiedliche Stufen für dynamische vs. statische Inhalte
# Dynamische Inhalte - schnellere Kompression
brotli on;
brotli_comp_level 4;
# Vorab komprimierte statische Dateien - beste Kompression
brotli_static on;
Mindestgrößenschwelle
# Kleine Dateien nicht komprimieren (nicht lohnenswert)
brotli_min_length 256;
Fehlersuche
Brotli funktioniert nicht
-
Überprüfen Sie, ob das Modul geladen ist:
nginx -V 2>&1 | grep brotli -
Stellen Sie sicher, dass die Anfrage
Accept-Encoding: brenthält -
Überprüfen Sie, ob der
Content-Typeinbrotli_typesenthalten ist
CPU-Auslastung zu hoch
Senken Sie die Kompressionsstufe:
brotli_comp_level 4; # oder sogar 2-3
Dateien werden nicht komprimiert
- Überprüfen Sie die Dateigröße >
brotli_min_length - Stellen Sie sicher, dass der
Content-Typemitbrotli_typesübereinstimmt - Überprüfen Sie, ob die Verbindung nicht bereits komprimiert ist (CDN)
Verwandt
-
Brotli-Modul
Vollständige Direktive-Referenz
-
Unbrotli-Modul
Brotli von Backends dekomprimieren
-
PageSpeed-Modul
Zusätzliche Optimierungsschicht