Webserver Konfiguration · 11 min read · Sep 14, 2025
mod_gzip - komprimierte Inhalte durch den Apache-Webserver bereitstellen - Seite 6
Autor: Michael Schröpl
Die genaue Menge der angeforderten Funktionen ist durch zusätzliche Apache-Konfigurationsanweisungen zu beschreiben, die durch die Integration des mod_gzip-Moduls verfügbar werden.
Eine wirklich vollständige Dokumentation der Auswirkungen dieser Anweisungen ist momentan nicht verfügbar; im Allgemeinen gehen Sie davon aus, dass
- fast alles in jeder Umgebung verwendet werden kann, d. h. - im gesamten Serverbereich,
- in separaten virtuellen Hosts,
- in Verzeichnissen oder sogar
- in .htaccess-Dateien und
- grundsätzlich die Standardüberschreibungsverfahren von Apache gelten - mit Ausnahme der Anweisungen zur Festlegung der Auswahl der Inhalte, die komprimiert werden sollen, wo die Dinge etwas komplizierter werden.
Die nachfolgend beschriebene Konfiguration ist wirklich nicht dazu gedacht, blind in Ihre eigene Konfiguration kopiert zu werden - ihre Absicht ist vielmehr, Ihnen ein Gefühl dafür zu geben, wie viele Optionen bereitgestellt werden. Und es gibt viele Optionen - zumindest wenn Sie ‘einfach komprimierte Ausgabedaten erhalten’ möchten …
| laden | verantwortlichkeiten | vorab komprimiert | bürokratie | datenverwaltung | dateigrößen | anforderungen | filter | übertragungscodierung | protokollierung | proxy |
#######################################
### Apache-Konfigurationsanweisungen ###
### für mod_gzip 1.3.26.1a ###
#######################################
##########################
### Laden des Moduls ###
##########################
# ---------------------------------------------------------------------
# DLL laden / Win32:
# LoadModule gzip_module modules/ApacheModuleGzip.dll
#
# DSO laden / UNIX:
# LoadModule gzip_module modules/mod_gzip.so
#
# (keines von beiden, wenn das Modul statisch kompiliert wurde; # der genaue Dateiname kann von der genauen Kompilierungsmethode abhängen,
# die für dieses Modul verwendet wurde)# ---------------------------------------------------------------------
########################
### Verantwortlichkeiten ###
########################
# ---------------------------------------------------------------------
# mod_gzip überhaupt verwenden?
mod_gzip_on Ja
# (Sie können mod_gzip insbesondere in der zentralen Serverkonfiguration aktivieren,
# es jedoch in einigen Verzeichnissen oder virtuellen Hosts mit dieser Anweisung deaktivieren.)
# ---------------------------------------------------------------------
######################################
### Statisch vorab komprimierte Dateien ###
######################################
# ---------------------------------------------------------------------
# Lassen Sie mod_gzip 'partielle Inhaltsverhandlung' durchführen?
mod_gzip_can_negotiate Ja
# (Wenn diese Option aktiv ist und eine statische Datei komprimiert bereitgestellt werden soll,
# wird mod_gzip nach einer statischen vorab komprimierten
# Version dieser Datei mit einer definierten zusätzlichen Erweiterung suchen - siehe nächste
# Anweisung - die mit Priorität geliefert werden würde. Dies würde es ermöglichen,
# zu vermeiden, die gleiche statische Datei wiederholt zu komprimieren und somit
# CPU-Zeit zu sparen.
# Es wird kein dynamisches Caching dieser Datei bereitgestellt; derzeit ist der Benutzer
# selbst dafür verantwortlich, den Inhalt der vorab komprimierten
# Datei zu erstellen und zu aktualisieren.# Ab Version 1.3.19.2a erkennt mod_gzip automatisch, ob
# eine statisch vorab komprimierte Datei älter ist als ihr unkomprimiertes
# Original und wird in diesem Fall den Inhalt der Originaldatei in unkomprimierter Form
# bereitstellen - um eher korrekte Daten als veraltete zu liefern ...)# ---------------------------------------------------------------------# Erweiterung (Suffix) für statisch vorab komprimierte Dateien
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
# (Wirkung: siehe vorherige Anweisung; dieser String wird an den
# Namen der Originaldatei angehängt.
# Stellen Sie sicher, dass Sie die Kodierung 'gzip' für diese Erweiterung ebenfalls konfigurieren,
# da mod_gzip den Inhalt nicht selbst bereitstellt, sondern einfach eine
# interne Umleitung von Apache zu dieser URL generiert. Daher ist die verbleibende
# Apache-Konfiguration dafür verantwortlich, den Header 'Content-Encoding'
# ordnungsgemäß festzulegen ...
# Vor Version 1.3.19.2a war dieser Wert nicht konfigurierbar.)# ---------------------------------------------------------------------# Automatische Updates für statisch vorab komprimierte Dateien
mod_gzip_update_static Nein
# (Wenn auf 'Ja' gesetzt, würde diese Anweisung (neu in Version 1.3.26.1a)
# dazu führen, dass mod_gzip eine veraltete Version einer
# statisch vorab komprimierten Datei während der Anfrage automatisch aktualisiert, d. h. die
# ursprünglich angeforderte Datei komprimiert und die vorab komprimierte
# Varianten-Datei damit *überschreibt*!
# Für jedes automatische Update dieser Art wird mod_gzip eine Nachricht
# mit der Schwere 'Hinweis' in das Apache error_log schreiben.
# Währenddessen wird mod_gzip den Inhalt der Originaldatei direkt lesen.
# Daher kann dieser Inhalt *nicht* von einem anderen Apache-Modul
# während der Anfrage interpretiert werden. Dies könnte möglicherweise *nicht* das sein, was Sie wollen - hoffentlich
# wird es das sein, was die meisten Benutzer wollen, da es *schnell* funktioniert.
# Verwenden Sie diese Konfiguration mit großer Sorgfalt und stellen Sie sicher, dass Sie nicht
# versehentlich wertvolle Dateien innerhalb des URL-Baums überschreiben.
# Dies *ist kein* Feature, das für Mass-Hosting-Server verwendet werden sollte, insbesondere
# da mod_gzip dort möglicherweise auf Probleme mit der Zugriffskontrolle stößt - die
# Benutzer-ID, unter der die Apache-Prozesse ausgeführt werden, muss Schreibzugriff
# auf die vorab komprimierten Dateien aller Benutzer haben, was möglicherweise nicht automatisch der
# Fall ist.)
# [mod_gzip-Fehlerbehandlung in dieser Situation??? Was wird bereitgestellt?]# ---------------------------------------------------------------------
###################
### Bürokratie ###
###################
# ---------------------------------------------------------------------
# Anzeige des Status für mod_gzip
mod_gzip_command_version '/mod_gzip_status'
# (definiert eine URL zur Anzeige des Status von mod_gzip; kann individuell
# für jede Installation angegeben und aus Datenschutzgründen gegen den Zugriff
# über den -Abschnitt geschützt werden)
# ---------------------------------------------------------------------
# Die Statusanzeige wird folgendermaßen aussehen:
# mod_gzip ist verfügbar...
# mod_gzip_version = 1.3.26.1a
# mod_gzip_on = Ja/Nein
# und wird somit Informationen bereitstellen über
# - mod_gzip, das auf dem Server installiert und korrekt funktioniert,
# - welche Version installiert wurde und
# - ob mod_gzip für diesen Standort auf 'aktiv' gesetzt wurde
# (-> mod_gzip_on)
# ---------------------------------------------------------------------
#######################
### Datenverwaltung ###
#######################
# ---------------------------------------------------------------------
# Arbeitsverzeichnis für temporäre Dateien und den Komprimierungscache
# Wenn nicht angegeben, werden die folgenden Standardwerte verwendet:
# [Win32=c:\temp], [UNIX=/tmp]
# mod_gzip_temp_dir /tmp
# (Dieses Verzeichnis muss bereits existieren und die Benutzer-ID, die für
# den Betrieb des Apache-Servers verwendet wird, muss Lese- und Schreibzugriff auf dieses
# Verzeichnis haben.
# Im Gegensatz zu anderen Apache-Anweisungen muss hier ein absoluter Pfadname angegeben
# werden; ein relativer Wert wird nicht relativ zu ServerRoot interpretiert.
# Dieser Pfadname darf NICHT mit '/' enden.
# Für maximale Leistung sollte dieses Verzeichnis auf einem RAM-Disk liegen,
# wenn das Dateisystem nicht bereits effizient zwischengespeichert wird
# ---------------------------------------------------------------------
# Temporäre Arbeitsdateien speichern [Ja, Nein]
mod_gzip_keep_workfiles Nein
# (eine Datei pro HTTP-Anfrage - nur zu Debugging-Zwecken auf 'ja' setzen!)
# ---------------------------------------------------------------------
##################
### Dateigrößen ###
##################
# ---------------------------------------------------------------------
# Mindestgröße (in Bytes) für Dateien, die komprimiert werden sollen
mod_gzip_minimum_file_size 500
# (Für sehr kleine Dateien wird die Kompression nur geringe absolute Gewinne
# bringen [Sie werden immer noch etwa 50% des Inhalts sparen, aber einige zusätzliche
# 500 Bytes HTTP- und TCP-Header bleiben immer unkomprimiert],
# aber dennoch CPU-Last sowohl für den Client als auch den Server erzeugen.
# mod_gzip wird automatisch kleinere Werte als 300 Bytes für
# diese Anweisung auf genau diesen Wert 300 setzen.)
# ---------------------------------------------------------------------
# Maximale Größe (in Bytes) für Dateien, die komprimiert werden sollen
mod_gzip_maximum_file_size 500000
# (Für sehr große Dateien kann die Kompression möglicherweise recht lange dauern und
# somit den Start der Übertragung verzögern.
# Darüber hinaus verhindert eine Begrenzung an dieser Stelle, dass der Server
# Ausgaben unbegrenzter Größe im Falle einer Endlosschleife
# innerhalb eines CGI-Skripts erzeugt - oder sogar versucht, Streaming-Daten zu komprimieren -
# was andernfalls die Erstellung einer temporären Datei beliebiger
# Größe verursachen und sogar die gesamte Festplatte füllen könnte.
# Andererseits wird die Kompression einen viel wahrnehmbareren
# subjektiven Effekt bei großen Dateien haben ... also stellen Sie sicher, dass Sie dies
# entsprechend Ihren Anforderungen feinabstimmen.)
# ---------------------------------------------------------------------
# Maximale Größe (in Bytes) für Dateien, die im Speicher komprimiert werden sollen
mod_gzip_maximum_inmem_size 60000
# (Größere Dateien werden in das temporäre Verzeichnis für Dateien komprimiert; passen Sie
# diesen Wert an den verfügbaren Hauptspeicher Ihres Servers an.
# In mod_gzip 1.3.19.x werden größere Werte automatisch auf
# 60000 begrenzt, da einige Betriebssysteme angeblich Probleme haben,
# mehr als 64 kb Speicher auf einmal zuzuweisen.
# ---------------------------------------------------------------------
####################
### Anforderungen ###
####################
# (siehe Kapitel über Caching für Probleme bei der Verwendung dieser Anweisungen.)
# ---------------------------------------------------------------------
# Erforderliche HTTP-Version des Clients
# Mögliche Werte: 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...
# Diese Anweisung verwendet die gleichen numerischen Protokollwerte wie Apache
# intern
mod_gzip_min_http 1000
# (Durch die Verwendung dieser Anweisung können Sie alte Browser, Suchmaschinen
# usw. vom Kompressionsverfahren ausschließen: Wenn der Benutzer-Agent sich
# nicht als fähig erklärt, mindestens das hier angegebene HTTP-Niveau zu verstehen,
# werden nur unkomprimierte Daten geliefert - egal, was er sonst noch behauptet,
# in der Lage zu sein. Der Wert '1001' schließt insbesondere
# Netscape 4.x und viele Proxy-Server aus.)
# --------------------------------------------------------------------- # HTTP-Methoden, die behandelt werden sollen
# Mögliche Werte: 'GET', 'POST' oder eine Liste beider Werte.
mod_gzip_handle_methods GET POST
# (Durch die Verwendung dieser Anweisung können Sie insbesondere POST-Anfragen
# vom Kompressionsverfahren ausschließen. Es sind bekannte Fälle bekannt, in denen
# die Verarbeitung dieser Anfragen durch frühere mod_gzip-Versionen Probleme verursachen konnte.
# Vor Version 1.3.19.2a war dieser Wert nicht konfigurierbar.)# ---------------------------------------------------------------------
###############
### Filter ###
###############
# ---------------------------------------------------------------------
# Welche Dateien sollen komprimiert werden?
#
# Die Reihenfolge der Verarbeitung während jeder der beiden Phasen ist nicht wichtig,
# aber um die Kompression des Inhalts einer Anfrage auszulösen, muss diese Anfrage
# a) *mindestens einer Einschlussregel in jeder der beiden Phasen entsprechen* und
# b) *darf keiner Ausschlussregel in einer der beiden Phasen entsprechen.*
# Diese Regeln sind nicht minimal, sie sollen nur als Beispiel dienen.
## Beachten Sie, dass alle Parameterwerte der Anweisungen in diesem Abschnitt
# als reguläre Ausdrücke ausgewertet werden und *nicht* in einer Groß-/Kleinschreibung
# sensiblen Weise.# ---------------------------------------------------------------------
# Phase 1: (reqheader, uri, datei, handler)
# ========================================
# NEIN: spezielle fehlerhafte Browser, die nach gzipped-Inhalten anfordern,
# aber dann nicht in der Lage sind, sie korrekt zu verarbeiten
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"# Ab Version 1.3.19.2a rate ich *davon ab, Filter*
# *für Benutzer-Agenten zu verwenden*, da dies HTTP-Header 'Vary: User-Agent'
# erzeugt, was das Leben für Proxy-Server schwieriger macht.#
# JA: HTML-Dokumente
mod_gzip_item_include datei \.html$
#
# NEIN: Include-Dateien / JavaScript & CSS (aufgrund von Netscape4-Fehlern)
mod_gzip_item_exclude datei \.js$
mod_gzip_item_exclude datei \.css$
#
# JA: CGI-Skripte
mod_gzip_item_include datei \.pl$
mod_gzip_item_include handler ^cgi-script$
#
# Phase 2: (mime, rspheader)
# ===========================
# JA: normale HTML-Dateien, normale Textdateien, Apache-Verzeichnisauflistungen
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^httpd/unix-directory$
#
# NEIN: Bilder (GIF usw., werden selten etwas sparen)
mod_gzip_item_exclude mime ^image/
# ---------------------------------------------------------------------
# Tatsächlich überprüft mod_gzip nur die ersten 4 Zeichen des 1.
# Operanden (im Falle von uri sogar nur die ersten 2 Zeichen, um
# Werte wie url zuzulassen).
# ---------------------------------------------------------------------
# Die Tabelle für mod_gzip_item-Regeln (einschließen und ausschließen) kann nicht mehr als
# 256 Einträge enthalten; wenn diese Zahl überschritten wird, gibt mod_gzip die
# Nachricht "mod_gzip: FEHLER: Elementindex ist voll" aus
# und meldet einen Konfigurationsfehler an den Apache-Server.
# ---------------------------------------------------------------------
# Die hier beschriebenen Anweisungswerte sollen die Anfragen
# für die Kompression *möglichst genau* beschreiben.
# Besonders für die mime-Regeln muss klargestellt werden, dass der HTTP-
# Header 'Content-Type' (der von mod_gzip für diese Regel überprüft wird)
# in einigen Fällen nicht nur einen MIME-Typ, sondern zusätzlich eine
# Zeichensatzbeschreibung (charset) enthalten kann.
# Wenn dies der Fall ist für die zu behandelnden Anfragen, müssen Sie
# das '$'-Zeichen am Ende des entsprechenden Wertes entfernen, damit jetzt
# nur das Präfix dieses Wertes auf Übereinstimmung getestet wird.
# ---------------------------------------------------------------------
##########################
### Übertragungscodierungen ###
##########################
# ---------------------------------------------------------------------
# Erlauben Sie mod_gzip, den HTTP-Header
# 'Transfer-encoding: chunked'
# zu eliminieren und die Chunks zu einem (komprimierbaren) Paket zu verbinden
mod_gzip_dechunk Ja
# (dies ist erforderlich für die Verarbeitung mehrerer Arten von dynamisch generierten
# Inhalten, insbesondere für CGI- und SSI-Seiten, aber auch für Seiten, die von
# einigen Java-Servlet-Interpretern erzeugt werden.
# ---------------------------------------------------------------------
###############
### Protokollierung ###
###############
# ---------------------------------------------------------------------
# Erweiterte Protokollformat (zum Testen der Kompressionseffekte)
LogFormat "%h %l %u %t \"%V %r\" %
# ---------------------------------------------------------------------
# Erstellen Sie eine zusätzliche Protokolldatei
CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
# (sicherlich können Sie Ihr normales Protokolldateiformat neu definieren, aber Sie
# können es auch standardkompatibel für die Auswertung durch Standard-Web-
# Analysewerkzeuge halten. Also erstellen wir einfach eine andere Protokolldatei.)
# ---------------------------------------------------------------------
# Volumenberechnung der gelieferten Dateien im Apache access_log:
# zählen Sie die HTTP-Headergröße (in Bytes) als Teil der Gesamtgröße der Ausgabe
mod_gzip_add_header_count Ja
# (Dies wird mehr sein als der reine Dokumentinhalt, aber es wird
# realistischer den gesamten Ausgabeverkehr der HTTP-Anfrage beschreiben)
# ---------------------------------------------------------------------
###############
### Proxys ###
###############
# ---------------------------------------------------------------------
# Senden eines 'Vary'-HTTP-Headers
mod_gzip_send_vary Ein
# (siehe Kapitel über Caching für diese Anweisung.)
# *Ändern Sie dies nicht, es sei denn, Sie wissen absolut, was Sie tun!*
# ---------------------------------------------------------------------
Reihenfolge beim Laden von Modulen
Beim dynamischen Hinzufügen dieses Moduls müssen Sie beachten, dass mod_gzip als letztes von mehreren LoadModule-Anweisungen angegeben werden sollte, die verwendet werden.
Dies liegt daran, dass Apache intern einen Stack aus den LoadModule-Anweisungen aufbaut und ihn später in umgekehrter Reihenfolge auswertet.
mod_gzip hängt sich in die type_checker-Routine von Apache ein; aber nur das erste aller Module, das sich als verantwortlich für die Verarbeitung einer Anfrage erklärt (z. B. ColdFusion und SSL werden es versuchen), wird tatsächlich von Apache aktiviert. Daher muss mod_gzip vor den Modulen aktiviert werden, deren Ausgabe es in sich umleiten und dann nachbearbeiten möchte - solange diese Module versuchen, dasselbe type_checker-Interface zu verwenden … wenn sie das nicht tun, dann kann es unabhängig von dieser Reihenfolge der Anweisungen funktionieren.
Während der Startnachricht von Apache (die z. B. im Apache-Fehlerprotokoll zu finden ist) können Module mit individuellen Versionsspezifikationen genau in der Reihenfolge aufgelistet werden, in der sie in der Modul-Kette erscheinen; dort muss mod_gzip vor anderen Modulen aufgeführt sein, deren Ausgabe es beabsichtigt zu komprimieren.
Ursprünglicher Standort dieses Dokuments:
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.