mod_deflate auf Lighttpd 1.4 (Debian Etch)
TL;DR
Diese Anleitung zeigt Schritt für Schritt, wie Sie mod_deflate in Lighttpd 1.4 unter Debian Etch patchen, bauen und konfigurieren. Dadurch reduzieren Sie Bandbreitenverbrauch und beschleunigen das Laden von Seiten ohne ältere Browser auszuschließen.
Kurzbeschreibung
In diesem Tutorial beschreibe ich, wie Sie mod_deflate für einen Lighttpd 1.4 Webserver auf Debian Etch installieren und konfigurieren. mod_deflate komprimiert statische und dynamische Inhalte (z. B. PHP), während das ältere mod_compress nur statische Dateien komprimiert. Debian Etch liefert Lighttpd 1.4.13, das wir mit einem Patch erweitern, um mod_deflate zu unterstützen. Komprimierte HTML/Text/XML-Dateien können auf etwa 20–30 % ihrer ursprünglichen Größe schrumpfen, was Datenübertragung spart und Nutzer mit langsamen Verbindungen deutlich schneller bedient.
Wichtig: Kompression erhöht die CPU-Last leicht, reduziert aber meist die Gesamtlatenz wegen kürzerer Übertragungszeiten.
1 Vorbemerkung
Sie können dieser Anleitung folgen, unabhängig davon, ob Lighttpd bereits installiert ist oder nicht. Wir bauen ein neues Debian-Paket (lighttpd_1.4.13-4etch1_i386.deb), das ein vorhandenes Lighttpd ersetzt.
Wenn Lighttpd bereits installiert ist, prüfen Sie Version und Features mit:
lighttpd -VDie Ausgabe sollte Version 1.4.13 zeigen (Beispielausgabe im Original). Achten Sie auf eingebundene Features wie zlib- und bzip2-Support.
2 Lighttpd mit mod_deflate bauen
Installieren Sie zunächst die grundlegenden Build-Tools:
apt-get install build-essentialWechseln Sie danach nach /usr/src und laden Sie das Debian-Quellpaket von Lighttpd:
cd /usr/src
apt-get source lighttpdMit ls -l sehen Sie das Quellverzeichnis (z. B. lighttpd-1.4.13) und die zugehörigen Dateien.
Laden Sie den mod_deflate-Patch herunter und patchen Sie die Quellen:
wget http://trac.lighttpd.net/trac/attachment/wiki/Mod_Deflate/lighttpd-1.4.13.mod_deflate.jz.patch?format=raw
mv lighttpd-1.4.13.mod_deflate.jz.patch?format=raw lighttpd-1.4.13.mod_deflate.jz.patch
cd lighttpd-1.4.13
patch -p1 < ../lighttpd-1.4.13.mod_deflate.jz.patchWenn das Patchen erfolgreich ist, bauen Sie das Paket mit:
dpkg-buildpackageFalls dpkg-buildpackage fehlende Build-Abhängigkeiten meldet, installieren Sie diese, z. B.:
apt-get install debhelper cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-devFühren Sie danach dpkg-buildpackage erneut aus. Der Build erzeugt ein neues .deb-Paket in /usr/src (dieser Vorgang kann einige Zeit dauern).
Hinweis: Der Patch benötigt bzip2-Unterstützung in Lighttpd. Debian hat bzip2 standardmäßig aktiviert, daher ist in der Regel kein weiteres Eingreifen nötig.
Nach erfolgreichem Build finden Sie unter /usr/src u. a. eine Datei wie lighttpd_1.4.13-4etch1_i386.deb. Installieren Sie das Paket mit:
dpkg -i lighttpd_1.4.13-4etch1_i386.debKopieren Sie anschließend das neue Modul an den richtigen Ort:
cp /usr/src/lighttpd-1.4.13/debian/tmp/usr/lib/lighttpd/mod_deflate.so /usr/lib/lighttpdPrüfen Sie die neue Build-Information:
lighttpd -VDie Build-Date zeigt das aktuelle Datum der kompilierten Version. Es ist normal, wenn mod_deflate nicht explizit in der Feature-Liste erscheint.
3 Lighttpd konfigurieren
Die Konfiguration von Lighttpd liegt in /etc/lighttpd/lighttpd.conf. Öffnen Sie die Datei und fügen Sie “mod_deflate” zur server.modules-Zeile hinzu. Wichtig: Ist mod_rewrite aktiviert, listet Lighttpd mod_deflate hinter mod_rewrite.
vi /etc/lighttpd/lighttpd.confBeispiel (auszug):
| [...] server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_fastcgi", # "mod_rewrite", "mod_deflate", # "mod_redirect", # "mod_status", # "mod_evhost", # "mod_compress", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) [...] |
Fügen Sie in derselben Konfigurationsdatei am Ende die mod_deflate-Einstellungen ein:
| [...] deflate.enabled = "enable" deflate.compression-level = 9 deflate.mem-level = 9 deflate.window-size = 15 # deflate.bzip2 only in patch for 1.4.x deflate.bzip2 = "enable" # deflate.allowed_encodings only in 1.5.x #deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" ) deflate.min-compress-size = 200 #deflate.sync-flush = "enable" deflate.output-buffer-size = 4096 deflate.work-block-size = 512 deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "text/xml") #deflate.debug = "enable" |
Starten Sie Lighttpd neu, damit die Änderungen aktiv werden:
/etc/init.d/lighttpd restartWenn Seiten danach leer erscheinen, reduzieren Sie deflate.output-buffer-size auf 2048 oder 1024 und starten Sie den Dienst neu.
4 Überprüfen, dass Kompression funktioniert
Aktivieren Sie zu Debug-Zwecken deflate.debug = “enable” in der Konfiguration und prüfen Sie das Error-Log:
tail -f /var/log/lighttpd/error.logBei Zugriff auf eine komprimierte Datei sehen Sie Log-Einträge wie in der Original-Anleitung, die die Input- und Output-Größen zeigen (z. B. aus: 53875 in -> 8446 out).
Faktenbox
- Typische Kompressionsrate für HTML/Text/XML: 70–80 % Reduktion (Dateien bleiben bei ~20–30 % der Originalgröße).
- Minimalgröße zur Kompression: in der Beispielkonfiguration 200 Bytes.
- Empfohlene Standard-Parameter: compression-level 9, output-buffer-size 4096 (bei Problemen verkleinern).
Wann mod_deflate nicht passt
- Sehr CPU-beschränkte Server: Bei stark hoher Last kann zusätzliche Kompression die CPU über Gebühr belasten.
- Nicht-HTTP-kompatible Clients: Alte oder ungewöhnliche Clients, die keine Content-Encoding-Header verstehen, erhalten aber unkomprimiert ausgelieferte Inhalte durch die Verhandlung zwischen Browser und Server.
- Bereits komprimierte Inhalte (z. B. PNG, JPEG, ZIP): Keine zusätzliche Kompression — ggf. via mimetypes ausschließen.
Alternative Ansätze
- Server-seitige Kompression via Reverse-Proxy (z. B. Varnish/HAProxy + gzip): Entlastet Backend-Server, kann Caching verbessern.
- HTTP/2 + TLS: Bietet Latenzvorteile; Kompression bleibt sinnvoll für Textinhalte.
- Vorab-komprimierte Assets (z. B. .gz-Dateien für statische Ressourcen) und passende serverseitige Konfiguration zum Ausliefern dieser Dateien.
Schnell-Playbook (Kurz-Anleitung)
- apt-get source lighttpd
- Patch herunterladen und anwenden
- Fehlende Build-Dependencies installieren
- dpkg-buildpackage
- dpkg -i lighttpd_*.deb
- cp mod_deflate.so nach /usr/lib/lighttpd
- server.modules anpassen und deflate.* Einstellungen ergänzen
- /etc/init.d/lighttpd restart
- deflate.debug aktivieren und /var/log/lighttpd/error.log prüfen
Rollen-Checkliste für Administratoren
- Systemadministrator:
- Backup der aktuellen lighttpd.conf anlegen
- Paket- und Quellcode-Downloads in /usr/src durchführen
- Build-Umgebung absichern und Abhängigkeiten installieren
- Release-Manager:
- Prüfen, dass das neue .deb signiert bzw. vertrauenswürdig ist
- Deployment-Fenster für Neustart planen
- Support/Helpdesk:
- Anleitung für Fehlerdiagnose (siehe nächster Abschnitt) bereithalten
Fehlerbehebung (Mini-Runbook)
- Dienst startet nicht: /var/log/lighttpd/error.log prüfen. Konfigurationssyntax überprüfen.
- Leere Seiten nach Aktivierung: deflate.output-buffer-size auf 2048 oder 1024 reduzieren, Dienst neu starten.
- Keine Kompression im Log: deflate.debug = “enable” setzen, Log beobachten, Browser-Request-Header prüfen (Accept-Encoding).
- Modul nicht gefunden: Sicherstellen, dass /usr/lib/lighttpd/mod_deflate.so vorhanden ist und die Dateirechte stimmen.
Mini-Methodologie: Sichere Reihenfolge beim Rollout
- Testumgebung einrichten (identische Lighttpd-Version)
- Patch anwenden und Paket bauen
- Funktionalität mit Test-Clients verifizieren
- Konfiguration schrittweise in Produktion ausrollen (z. B. Canary-Hosts)
- Monitoring (Fehlerlog, CPU, Antwortzeiten) für 24–72 Stunden beobachten
1-zeiliges Glossar
- mod_deflate: Lighttpd-Plugin zum Komprimieren von HTTP-Antworten mittels gzip/bzip2.
- deflate.*: Konfigurationsprefix für mod_deflate-Optionen in lighttpd.conf.
Sicherheit und Datenschutzhinweis
Kompression beeinflusst keine personenbezogenen Daten per se. Bei Einsatz von Kompression in Kombination mit TLS gelten die üblichen Anforderungen: TLS korrekt konfigurieren und Logging auf sensible Inhalte prüfen.
Endezusammenfassung
mod_deflate bringt in Lighttpd 1.4 auf Debian Etch spürbare Bandbreiten- und Ladezeitvorteile, besonders für textbasierte Inhalte. Der Aufwand besteht hauptsächlich im Patchen und Neubauen des Pakets sowie in der sorgfältigen Konfiguration. Testen Sie vor dem produktiven Rollout und überwachen Sie CPU- und Latenzmetriken nach dem Einsatz.
Links
- Lighttpd: http://www.lighttpd.net
- mod_deflate: http://trac.lighttpd.net/trac/wiki/Mod_Deflate
- Debian: http://www.debian.org
Ähnliche Materialien
Podman auf Debian 11 installieren und nutzen
Apt-Pinning: Kurze Einführung für Debian
FSR 4 in jedem Spiel mit OptiScaler
DansGuardian + Squid (NTLM) auf Debian Etch installieren
App-Installationsfehler auf SD-Karte (Error -18) beheben