Zum Inhalt springen

Apache/13 Proxy und Cache/Proxy/mod proxy html: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „=== mod_proxy_html === Das Modul mod_proxy_html wurde längere Zeit als Drittanbieter-Modul gepflegt und erst im »Endspurt« der 2.4-Entwicklung in die offizielle Distribution aufgenommen. Es dient als Ausgabefilter (siehe auch Kapitel 16, »SSI und Filter«) und ermöglicht das Rewriting von HTML-Hyperlinks für eine Proxy-Umgebung. Genauer bietet das Modul die Möglichkeit, die Links in HTML-Dokumenten innerhalb einer durch eine Reverse-Proxy-Konfigur…“
 
K Textersetzung - „–“ durch „-“
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== mod_proxy_html ===
=== mod_proxy_html ===
Das Modul mod_proxy_html wurde längere Zeit als Drittanbieter-Modul gepflegt
Das Modul mod_proxy_html wurde längere Zeit als Drittanbieter-Modul gepflegt und erst im ''Endspurt'' der 2.4-Entwicklung in die offizielle Distribution aufgenommen
und erst im »Endspurt« der 2.4-Entwicklung in die offizielle Distribution aufgenommen. Es dient als Ausgabefilter (siehe auch Kapitel 16, »SSI und Filter«) und
* Es dient als Ausgabefilter ([[SSI und Filter]]) und ermöglicht das Rewriting von HTML-Hyperlinks für eine Proxy-Umgebung
ermöglicht das Rewriting von HTML-Hyperlinks für eine Proxy-Umgebung.


Genauer bietet das Modul die Möglichkeit, die Links in HTML-Dokumenten
Genauer ermöglicht das Modul, die Links in HTML-Dokumenten innerhalb einer durch eine Reverse-Proxy-Konfiguration angebundenen Website durch ihre externen Gegenstücke zu ersetzen, genau wie es ProxyPassReverse mit den aufgerufenen URLs macht
innerhalb einer durch eine Reverse-Proxy-Konfiguration angebundenen Website
durch ihre externen Gegenstücke zu ersetzen, genau wie es ProxyPassReverse
mit den aufgerufenen URLs macht.


Angenommen, ein Reverse-Proxy ist wie folgt eingebunden:
Angenommen, ein Reverse-Proxy ist wie folgt eingebunden
ProxyPass /external https://internal.mynet.de


ProxyPass /external http://internal.mynet.de
Eine Webseite innerhalb der Website unter https://internal.mynet.de enthält beispielsweise folgenden Link
<a href="https://internal.mynet.de/info.html">Info</a>


Eine Webseite innerhalb der Website unter http://internal.mynet.de enthält beispielsweise folgenden Link:
Mit mod_proxy_html können Sie dafür sorgen, dass der Link automatisch wie folgt geändert wird, um über den Proxy zugänglich zu sein
<a href="https://proxy.mynet.de/external/info.html">Info</a>


<a href="http://internal.mynet.de/info.html">Info</a>
ProxyHTMLEnable Aktiviert die Funktionalität von mod_proxy_html


Mit mod_proxy_html können Sie dafür sorgen, dass der Link automatisch wie folgt
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
geändert wird, um über den Proxy zugänglich zu sein:
Syntax ProxyHTMLEnable on|off Standardwert off


<a href="http://proxy.mynet.de/external/info.html">Info</a>
Mit dieser Direktive können Sie die Funktionalität von mod_proxy_html für den jeweiligen Kontext aktivieren
ProxyHTMLEnable on


ProxyHTMLEnable
Das Rewriting erfolgt nur für HTML-Dokumente (MIME-Types text/html oder application/xhtml+xml)
Aktiviert die Funktionalität von mod_proxy_html.
* Wenn Sie auch andere Dateitypen entsprechend bearbeiten möchten, müssen Sie die Umgebungsvariable PROXY_HTML_FORCE setzen
Beachten Sie jedoch, dass dies manche Dateien - insbesondere Binärformate, die an manchen Stellen zufällig HTML enthalten - unbrauchbar machen kann


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Wenn das Modul mod_xml2enc aktiv ist (siehe Kapitel 16, ''SSI und Filter''), dann wird automatisch die durch dieses Modul gebotene Internationalisierung aktiviert
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLEnable on|off
Standardwert off


Mit dieser Direktive können Sie die Funktionalität von mod_proxy_html für den
; ProxyHTMLURLMap Regeln für das HTML-URL-Rewriting definieren
jeweiligen Kontext aktivieren:


ProxyHTMLEnable on
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
 
Das Rewriting erfolgt nur für HTML-Dokumente (MIME-Types text/html oder
application/xhtml+xml). Wenn Sie auch andere Dateitypen entsprechend bear
 
beiten möchten, müssen Sie die Umgebungsvariable PROXY_HTML_FORCE setzen.
Beachten Sie jedoch, dass dies manche Dateien – insbesondere Binärformate, die
an manchen Stellen zufällig HTML enthalten – unbrauchbar machen kann.
 
Wenn das Modul mod_xml2enc aktiv ist (siehe Kapitel 16, »SSI und Filter«), dann
wird automatisch die durch dieses Modul gebotene Internationalisierung aktiviert.
 
ProxyHTMLURLMap
Regeln für das HTML-URL-Rewriting definieren
 
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLURLMap Suchmuster Ersatzmuster [Flags] [Bedingung]
Syntax ProxyHTMLURLMap Suchmuster Ersatzmuster [Flags] [Bedingung]
Standardwert nicht gesetzt
Standardwert nicht gesetzt


Nachdem Sie die Funktionalität mit ProxyHTMLEnable grundsätzlich aktiviert
Nachdem Sie die Funktionalität mit ProxyHTMLEnable grundsätzlich aktiviert haben, definiert ProxyHTMLURLMap die eigentlichen Ersetzungsregeln
haben, definiert ProxyHTMLURLMap die eigentlichen Ersetzungsregeln. Das folgende einfache Beispiel führt die in der Einführung beschriebene Ersetzung von
* Das folgende einfache Beispiel führt die in der Einführung beschriebene Ersetzung von Links auf https://internal.mynet.de nach /external auf dem aktuellen Host
Links auf http://internal.mynet.de nach /external auf dem aktuellen Host
(proxy.mynet.de) durch
(proxy.mynet.de) durch:


ProxyHTMLEnable on
; ProxyHTMLEnable on ProxyHTMLURLMap https://internal.mynet.de /external
ProxyHTMLURLMap http://internal.mynet.de /external


Die ersten beiden Parameter, Suchmuster und Ersatzmuster, bilden im Prinzip die
Die ersten beiden Parameter, Suchmuster und Ersatzmuster, bilden im Prinzip die Umkehrung der Parameter von Direktiven wie ProxyPass
Umkehrung der Parameter von Direktiven wie ProxyPass.


Als dritten Parameter können Sie beliebig viele der folgenden Flags angeben
Als dritten Parameter können Sie beliebig viele der folgenden Flags angeben
(dabei wird zwischen Groß- und Kleinschreibung unterschieden):
(dabei wird zwischen Groß- und Kleinschreibung unterschieden)
 
* h – HTML-Links ignorieren (unverändert durchreichen)
* e – Skript-Events ignorieren (unverändert durchreichen)
* c – eingebettete Skript- und Style-Abschnitte unverändert durchreichen
* L – letzte Regel; wenn die aktuelle Ersetzungsregel zutrifft, werden keine weiteren mehr ausgeführt (bei HTML-Links geschieht dies automatisch)
* l – das Gegenteil von L: auch auf HTML-Links gegebenenfalls weitere Regeln
anwenden
* R – Als Suchmuster wird ein regulärer Ausdruck verwendet, und im Ersatzmuster können die Treffervariablen $1 bis $9 für ()-geklammerte Teilausdrücke aus dem Suchmuster verwendet werden.


Apache als Proxy-Server 13.1
* h - HTML-Links ignorieren (unverändert durchreichen)
 
* e - Skript-Events ignorieren (unverändert durchreichen)
* x POSIX-erweiterte reguläre Ausdrücke verwenden (nur zusammen mit R
* c - eingebettete Skript- und Style-Abschnitte unverändert durchreichen
verwendbar)
* L - letzte Regel; wenn die aktuelle Ersetzungsregel zutrifft, werden keine weiteren mehr ausgeführt (bei HTML-Links geschieht dies automatisch)
* i beim Suchen keine Groß- und Kleinschreibung beachten (nur zusammen
* l - das Gegenteil von L: auch auf HTML-Links gegebenenfalls weitere Regeln anwenden
mit R verwendbar)
* R - Als Suchmuster wird ein regulärer Ausdruck verwendet, und im Ersatzmuster können die Treffervariablen $1 bis $9 für ()-geklammerte Teilausdrücke aus dem Suchmuster verwendet werden
* n den Speicher für reguläre Ausdrücke zur Beschleunigung deaktivieren (nur
* x - POSIX-erweiterte reguläre Ausdrücke verwenden (nur zusammen mit R verwendbar)
zusammen mit R verwendbar)
* i - beim Suchen keine Groß- und Kleinschreibung beachten (nur zusammen mit R verwendbar)
* s zeilenbasierte Suche nach regulären Ausdrücken (nur zusammen mit R verwendbar)
* n - den Speicher für reguläre Ausdrücke zur Beschleunigung deaktivieren (nur zusammen mit R verwendbar)
* ^ Treffer nur am String-Anfang (nur für Strings, nicht für reguläre Ausdrücke;
* s - zeilenbasierte Suche nach regulären Ausdrücken (nur zusammen mit R verwendbar)
* ^ - Treffer nur am String-Anfang (nur für Strings, nicht für reguläre Ausdrücke;
spielt bei HTML-Links keine Rolle)
spielt bei HTML-Links keine Rolle)
* $ Treffer nur am String-Ende (nur für Strings, nicht für reguläre Ausdrücke;
* $ - Treffer nur am String-Ende (nur für Strings, nicht für reguläre Ausdrücke;
spielt bei HTML-Links keine Rolle)
spielt bei HTML-Links keine Rolle)
* V Umgebungsvariablen im Ersatzmuster interpretieren (dazu muss ProxyHTMLInterp aktiv sein). Das Format im Ersatzmuster ist ${Variablenname|Standardwert}. Wenn die entsprechende Variable definiert ist, wird an
* V - Umgebungsvariablen im Ersatzmuster interpretieren (dazu muss ProxyHTMLInterp aktiv sein)
der jeweiligen Stelle ihr Wert eingefügt, andernfalls der angegebene Standardwert (Letzterer ist jedoch optional).
* Das Format im Ersatzmuster ist ${Variablenname|Standardwert}
* v Umgebungsvariablen im Suchmuster interpretieren (Details siehe bei V)
* Wenn die entsprechende Variable definiert ist, wird an der jeweiligen Stelle ihr Wert eingefügt, andernfalls der angegebene Standardwert (Letzterer ist jedoch optional)
* v - Umgebungsvariablen im Suchmuster interpretieren (Details siehe bei V)


Als letztes Argument kann schließlich optional ein ap_expr-Ausdruck angegeben
Als letztes Argument kann schließlich optional ein ap_expr-Ausdruck angegeben werden
werden. Die Regel wird dann nur beachtet, wenn dieser Ausdruck zutrifft. Alle
* Die Regel wird dann nur beachtet, wenn dieser Ausdruck zutrifft
Einzelheiten über Ausdrücke stehen in der Beschreibung der Direktive <If> in
* Alle Einzelheiten über Ausdrücke stehen in der Beschreibung der Direktive <If> in Kapitel 6, ''Grundkonfiguration''
Kapitel 6, »Grundkonfiguration«.


ProxyHTMLBufSize
; ProxyHTMLBufSize Anzahl Bytes, um die der interne Puffer für den HTML-Proxy bei Bedarf erhöht wird
Anzahl Bytes, um die der interne Puffer für den HTML-Proxy bei Bedarf erhöht
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
wird
Syntax ProxyHTMLBufSize Bytes Standardwert 8192


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Während des Link-Rewritings muss der Parser Nicht-HTML-Inhalte wie CSS und JavaScript in einem Puffer zwischenspeichern
Modul mod_proxy_html
* Wenn dieser Puffer zu klein wird, dann wird er jeweils in Blöcken der hier angegebenen Byte-Anzahl vergrößert
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Wenn Sie wissen, dass viele der zu verarbeitenden Dokumente Stylesheet- oder Skript-Blöcke enthalten, die größer als 8 KByte sind, dann sollten Sie den Wert
Syntax ProxyHTMLBufSize Bytes
Standardwert 8192


Während des Link-Rewritings muss der Parser Nicht-HTML-Inhalte wie CSS und
erhöhen, weil die dynamische Vergrößerung des Puffers während der Verarbeitung zu Lasten der Performance geht
JavaScript in einem Puffer zwischenspeichern. Wenn dieser Puffer zu klein wird, dann wird er jeweils in Blöcken der hier angegebenen Byte-Anzahl vergrößert.
Wenn Sie wissen, dass viele der zu verarbeitenden Dokumente Stylesheet- oder
Skript-Blöcke enthalten, die größer als 8 KByte sind, dann sollten Sie den Wert


erhöhen, weil die dynamische Vergrößerung des Puffers während der Verarbeitung zu Lasten der Performance geht.
Das folgende Beispiel stellt die doppelte Größe ein
 
Das folgende Beispiel stellt die doppelte Größe ein:


ProxyHTMLBufSize 16384
ProxyHTMLBufSize 16384


ProxyHTMLCharsetOut
ProxyHTMLCharsetOut Zeichensatz für die Ausgabe von mod_proxy_html festlegen
Zeichensatz für die Ausgabe von mod_proxy_html festlegen


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLCharset Zeichensatz|*
Syntax ProxyHTMLCharset Zeichensatz|*
Standardwert UTF-8
Standardwert UTF-8


Mit dieser Direktive können Sie einen Ausgabezeichensatz für das Ergebnis der
Mit dieser Direktive können Sie einen Ausgabezeichensatz für das Ergebnis der HTML-Proxy-Verarbeitung angeben
HTML-Proxy-Verarbeitung angeben. Der spezielle Wert * verwendet den Zeichensatz des Ursprungsdokuments. Wenn es möglich ist, sollten Sie aus PerformanceGründen bei UTF-8 bleiben, weil libxml2 auch intern diesen Zeichensatz verwendet und alles andere zu Lasten der Performance geht.
* Der spezielle Wert * verwendet den Zeichensatz des Ursprungsdokuments
* Wenn es möglich ist, sollten Sie aus PerformanceGründen bei UTF-8 bleiben, weil libxml2 auch intern diesen Zeichensatz verwendet und alles andere zu Lasten der Performance geht


Hier dennoch ein Beispiel mit iso-latin-1:
Hier dennoch ein Beispiel mit iso-latin-1


ProxyHTMLCharsetOut ISO-8859-1
ProxyHTMLCharsetOut ISO-8859-1


ProxyHTMLDocType
ProxyHTMLDocType Eine HTML- oder XHTML-Doctype-Deklaration hinzufügen
Eine HTML- oder XHTML-Doctype-Deklaration hinzufügen


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLDocType HTML|XHTML [Legacy]
Syntax ProxyHTMLDocType HTML|XHTML [Legacy]
oder
oder ProxyHTMLDocType fpi [SGML|XML]
ProxyHTMLDocType fpi [SGML|XML]
Standardwert nicht festgelegt
Standardwert nicht festgelegt


Diese Direktive setzt den <!DOCTYPE>-Header für die ausgegebenen HTML-Dokumente. In der ersten Form haben Sie die Wahl zwischen HTML (ergibt HTML 4.01)
Diese Direktive setzt den <!DOCTYPE>-Header für die ausgegebenen HTML-Dokumente
und XHTML (XHTML 1.0). Wenn Sie das Schlüsselwort Legacy hinzufügen, wird
* In der ersten Form haben Sie die Wahl zwischen HTML (ergibt HTML 4.01)
der Kompatibilitätsmodus Transitional aktiviert, der weniger genau ist als der
und XHTML (XHTML 1.0)
Standardmodus Strict. Wenn die Direktive in diesem Format verwendet wird,
* Wenn Sie das Schlüsselwort Legacy hinzufügen, wird der Kompatibilitätsmodus Transitional aktiviert, der weniger genau ist als der Standardmodus Strict
* Wenn die Direktive in diesem Format verwendet wird,


Apache als Proxy-Server 13.1
Apache als Proxy-Server 13.1


versucht mod_proxy_html zusätzlich, das HTML des verarbeiteten Dokuments im
versucht mod_proxy_html zusätzlich, das HTML des verarbeiteten Dokuments im Sinne des gewählten Standards zu säubern; wo dies nicht gelingt, werden entsprechende Fehler mit dem LogLevel debug ins ErrorLog geschrieben
Sinne des gewählten Standards zu säubern; wo dies nicht gelingt, werden entsprechende Fehler mit dem LogLevel debug ins ErrorLog geschrieben.


Die andere Möglichkeit ist die Angabe eines eigenen Formal Public Identifiers
Die andere Möglichkeit ist die Angabe eines eigenen Formal Public Identifiers
(FPI) wie beispielsweise "-//W3C//DTD HTML 4.01//EN". In diesem Fall gibt der
(FPI) wie beispielsweise "-//W3C//DTD HTML 4.01//EN"
zusätzliche Parameter an, ob SGML/HTML- oder XML/XHTML-Syntax verwendet
* In diesem Fall gibt der zusätzliche Parameter an, ob SGML/HTML- oder XML/XHTML-Syntax verwendet werden soll
werden soll.


ProxyHTMLEvents
ProxyHTMLEvents Liste von Attributen, die als Skript-Events interpretiert werden
Liste von Attributen, die als Skript-Events interpretiert werden


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLEvents Attribut [Attribut ...]
Syntax ProxyHTMLEvents Attribut [Attribut ...]
Standardwert nicht gesetzt
Standardwert nicht gesetzt


Eine Reihe von HTML-Attributen sind JavaScript-Event-Handler, beispielweise
Eine Reihe von HTML-Attributen sind JavaScript-Event-Handler, beispielweise onclick oder onfocus
onclick oder onfocus. Diese können JavaScript-Anweisungen enthalten, in
* Diese können JavaScript-Anweisungen enthalten, in denen sich wiederum URLs befinden können, die umgeschrieben werden sollten
denen sich wiederum URLs befinden können, die umgeschrieben werden sollten.
mod_proxy_html sucht in allen hier angegebenen Attributen danach und ersetzt sie
mod_proxy_html sucht in allen hier angegebenen Attributen danach und ersetzt
* In der Standardkonfiguration werden alle HTML-4.0.1- und XHTML-1.0Event-Attribute angegeben
sie. In der Standardkonfiguration werden alle HTML-4.0.1- und XHTML-1.0Event-Attribute angegeben:


ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
Zeile 182: Zeile 133:
onunload onsubmit onreset onselect onchange
onunload onsubmit onreset onselect onchange


Es ist eine gute Idee, auch das Attribut style hinzuzufügen. Dies löst zwar kein
Es ist eine gute Idee, auch das Attribut style hinzuzufügen
JavaScript aus, sondern enthält Inline-CSS, aber dies kann URL-Angaben wie
* Dies löst zwar kein JavaScript aus, sondern enthält Inline-CSS, aber dies kann URL-Angaben wie background-image:url(...) enthalten, die gegebenenfalls geändert werden müssen
background-image:url(...) enthalten, die gegebenenfalls geändert werden
müssen.


ProxyHTMLExtended
ProxyHTMLExtended Bestimmt, ob die Ersetzungsregeln auch auf Inline-Skripte, -Stylesheets und Skript-Ereignisse angewendet werden
Bestimmt, ob die Ersetzungsregeln auch auf Inline-Skripte, -Stylesheets und
Skript-Ereignisse angewendet werden.


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>


Syntax ProxyHTMLExtended on|off
Syntax ProxyHTMLExtended on|off Standardwert off
Standardwert off


Wenn diese Direktive den Wert off hat, werden die Ersetzungsregeln nur auf
Wenn diese Direktive den Wert off hat, werden die Ersetzungsregeln nur auf HTML-Links angewendet, bei on auch auf Inline-Skripte, -Stylesheets und SkriptEreignisse (sofern die ProxyHTMLURLMap-Flags entsprechend gesetzt sind)
HTML-Links angewendet, bei on auch auf Inline-Skripte, -Stylesheets und SkriptEreignisse (sofern die ProxyHTMLURLMap-Flags entsprechend gesetzt sind). Wenn
* Wenn Sie diese Funktionalität einschalten, hat der Parser mehr zu tun, und die Performance kann leiden
Sie diese Funktionalität einschalten, hat der Parser mehr zu tun, und die Performance kann leiden. Sie sollten on also nur verwenden, wenn es wirklich notwendig ist.
* Sie sollten on also nur verwenden, wenn es wirklich notwendig ist


ProxyHTMLFixups
ProxyHTMLFixups Beseitigung einfacher HTML-Fehler
Beseitigung einfacher HTML-Fehler


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLFixups [lowercase] [dospath] [reset]
Syntax ProxyHTMLFixups [lowercase] [dospath] [reset]
Standardwert nicht gesetzt
Standardwert nicht gesetzt


Wenn diese Direktive gesetzt wird, kann mod_proxy_html einfache, verbreitete
Wenn diese Direktive gesetzt wird, kann mod_proxy_html einfache, verbreitete HTML-Link-Fehler beseitigen
HTML-Link-Fehler beseitigen:


* lowercase URLs werden in Kleinschreibung umgewandelt.
* lowercase - URLs werden in Kleinschreibung umgewandelt
* dospath Backslashes (\) werden in Forward-Slashes (/) umgewandelt.
* dospath - Backslashes (\) werden in Forward-Slashes (/) umgewandelt
* reset Einstellungen der nächsthöheren Konfigurationsebene werden
* reset - Einstellungen der nächsthöheren Konfigurationsebene werden zurückgesetzt
zurückgesetzt.


Sie können beliebig viele dieser Werte angeben.
Sie können beliebig viele dieser Werte angeben


Bitte beachten Sie, dass die vermeintlichen Fehler in manchen HTML-Dokumenten Absicht sind; verwenden Sie diese Direktive daher nur, wenn Sie genau wissen, dass der Backend-Server die entsprechenden Fehler produziert.
Bitte beachten Sie, dass die vermeintlichen Fehler in manchen HTML-Dokumenten Absicht sind; verwenden Sie diese Direktive daher nur, wenn Sie genau wissen, dass der Backend-Server die entsprechenden Fehler produziert


ProxyHTMLInterp
ProxyHTMLInterp Ersetzungsregeln für jede Anfrage neu interpretieren
Ersetzungsregeln für jede Anfrage neu interpretieren


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Syntax ProxyHTMLInterp on|off Standardwert off
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLInterp on|off
Standardwert off


Apache als Proxy-Server 13.1
Apache als Proxy-Server 13.1


Standardmäßig werden die Ersetzungsregeln beim Start von Apache vorkompiliert und dann einfach angewendet. Wenn Sie diese Direktive auf on setzen, werden sie dagegen bei jeder einzelnen Anfrage neu interpretiert. Dies beeinträchtigt
Standardmäßig werden die Ersetzungsregeln beim Start von Apache vorkompiliert und dann einfach angewendet
die Performance, schafft aber beispielsweise die Möglichkeit, Umgebungsvariablen zu verwenden.
* Wenn Sie diese Direktive auf on setzen, werden sie dagegen bei jeder einzelnen Anfrage neu interpretiert
* Dies beeinträchtigt die Performance, schafft aber beispielsweise die Möglichkeit, Umgebungsvariablen zu verwenden


ProxyHTMLLinks
ProxyHTMLLinks Legt die HTML-Elemente und -Attribute fest, die als Links gelten
Legt die HTML-Elemente und -Attribute fest, die als Links gelten.


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Modul mod_proxy_html
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
Syntax ProxyHTMLLinks Element Attribut [Attribut ...]
Syntax ProxyHTMLLinks Element Attribut [Attribut ...]
Standardwert nicht gesetzt
Standardwert nicht gesetzt


Diese Direktive legt die HTML-Elemente (Tags) und -Attribute fest, die als zu verarbeitende Links betrachtet werden. Sie benötigen für jedes Element eine Instanz
Diese Direktive legt die HTML-Elemente (Tags) und -Attribute fest, die als zu verarbeitende Links betrachtet werden
dieser Direktive, können aber beliebig viele Attribute angeben. Die Standardkonfiguration definiert alle HTML-4.0.1- und XHTML-1.0-Links:
* Sie benötigen für jedes Element eine Instanz dieser Direktive, können aber beliebig viele Attribute angeben
* Die Standardkonfiguration definiert alle HTML-4.0.1- und XHTML-1.0-Links
 
ProxyHTMLLinks a href ProxyHTMLLinks area href ProxyHTMLLinks link href ProxyHTMLLinks img src longdesc usemap ProxyHTMLLinks object classid codebase data usemap ProxyHTMLLinks q cite ProxyHTMLLinks blockquote cite ProxyHTMLLinks ins cite ProxyHTMLLinks del cite ProxyHTMLLinks form action ProxyHTMLLinks input src usemap ProxyHTMLLinks head profile ProxyHTMLLinks base href ProxyHTMLLinks script src for


ProxyHTMLLinks a href
ProxyHTMLStripComments HTML-Kommentare entfernen
ProxyHTMLLinks area href
ProxyHTMLLinks link href
ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks del cite
ProxyHTMLLinks form action
ProxyHTMLLinks input src usemap
ProxyHTMLLinks head profile
ProxyHTMLLinks base href
ProxyHTMLLinks script src for


ProxyHTMLStripComments
Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
HTML-Kommentare entfernen
Syntax ProxyHTMLStripComments on|off Standardwert off


Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul
Wenn Sie diese Direktive auf on setzen, werden HTML-Kommentare aus dem verarbeiteten Dokument entfernt
Modul mod_proxy_html
* Beachten Sie, dass dabei auch Skripte und Stylesheets verschwinden, die in Kommentare eingebettet sind
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>
* Außerdem würden auch die Anweisungen für kommentarbasierte Präprozessoren wie SSI und ESI gelöscht; daher müssen diese in der Filterkette vor mod_proxy_html verarbeitet werden ([[SSI und Filter]])
Syntax ProxyHTMLStripComments on|off
Standardwert off


Wenn Sie diese Direktive auf on setzen, werden HTML-Kommentare aus dem verarbeiteten Dokument entfernt. Beachten Sie, dass dabei auch Skripte und Stylesheets verschwinden, die in Kommentare eingebettet sind. Außerdem würden
[[Kategorie:Apache2.4]]
auch die Anweisungen für kommentarbasierte Präprozessoren wie SSI und ESI
gelöscht; daher müssen diese in der Filterkette vor mod_proxy_html verarbeitet
werden (siehe Kapitel 16, »SSI und Filter«).

Aktuelle Version vom 11. Mai 2025, 20:43 Uhr

mod_proxy_html

Das Modul mod_proxy_html wurde längere Zeit als Drittanbieter-Modul gepflegt und erst im Endspurt der 2.4-Entwicklung in die offizielle Distribution aufgenommen

  • Es dient als Ausgabefilter (SSI und Filter) und ermöglicht das Rewriting von HTML-Hyperlinks für eine Proxy-Umgebung

Genauer ermöglicht das Modul, die Links in HTML-Dokumenten innerhalb einer durch eine Reverse-Proxy-Konfiguration angebundenen Website durch ihre externen Gegenstücke zu ersetzen, genau wie es ProxyPassReverse mit den aufgerufenen URLs macht

Angenommen, ein Reverse-Proxy ist wie folgt eingebunden

ProxyPass /external https://internal.mynet.de

Eine Webseite innerhalb der Website unter https://internal.mynet.de enthält beispielsweise folgenden Link

<a href="https://internal.mynet.de/info.html">Info</a>

Mit mod_proxy_html können Sie dafür sorgen, dass der Link automatisch wie folgt geändert wird, um über den Proxy zugänglich zu sein

<a href="https://proxy.mynet.de/external/info.html">Info</a>

ProxyHTMLEnable Aktiviert die Funktionalität von mod_proxy_html

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>

Syntax ProxyHTMLEnable on|off Standardwert off

Mit dieser Direktive können Sie die Funktionalität von mod_proxy_html für den jeweiligen Kontext aktivieren

ProxyHTMLEnable on

Das Rewriting erfolgt nur für HTML-Dokumente (MIME-Types text/html oder application/xhtml+xml)

  • Wenn Sie auch andere Dateitypen entsprechend bearbeiten möchten, müssen Sie die Umgebungsvariable PROXY_HTML_FORCE setzen

Beachten Sie jedoch, dass dies manche Dateien - insbesondere Binärformate, die an manchen Stellen zufällig HTML enthalten - unbrauchbar machen kann

Wenn das Modul mod_xml2enc aktiv ist (siehe Kapitel 16, SSI und Filter), dann wird automatisch die durch dieses Modul gebotene Internationalisierung aktiviert

ProxyHTMLURLMap Regeln für das HTML-URL-Rewriting definieren

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLURLMap Suchmuster Ersatzmuster [Flags] [Bedingung] Standardwert nicht gesetzt

Nachdem Sie die Funktionalität mit ProxyHTMLEnable grundsätzlich aktiviert haben, definiert ProxyHTMLURLMap die eigentlichen Ersetzungsregeln

  • Das folgende einfache Beispiel führt die in der Einführung beschriebene Ersetzung von Links auf https://internal.mynet.de nach /external auf dem aktuellen Host

(proxy.mynet.de) durch

ProxyHTMLEnable on ProxyHTMLURLMap https://internal.mynet.de /external

Die ersten beiden Parameter, Suchmuster und Ersatzmuster, bilden im Prinzip die Umkehrung der Parameter von Direktiven wie ProxyPass

Als dritten Parameter können Sie beliebig viele der folgenden Flags angeben (dabei wird zwischen Groß- und Kleinschreibung unterschieden)

  • h - HTML-Links ignorieren (unverändert durchreichen)
  • e - Skript-Events ignorieren (unverändert durchreichen)
  • c - eingebettete Skript- und Style-Abschnitte unverändert durchreichen
  • L - letzte Regel; wenn die aktuelle Ersetzungsregel zutrifft, werden keine weiteren mehr ausgeführt (bei HTML-Links geschieht dies automatisch)
  • l - das Gegenteil von L: auch auf HTML-Links gegebenenfalls weitere Regeln anwenden
  • R - Als Suchmuster wird ein regulärer Ausdruck verwendet, und im Ersatzmuster können die Treffervariablen $1 bis $9 für ()-geklammerte Teilausdrücke aus dem Suchmuster verwendet werden
  • x - POSIX-erweiterte reguläre Ausdrücke verwenden (nur zusammen mit R verwendbar)
  • i - beim Suchen keine Groß- und Kleinschreibung beachten (nur zusammen mit R verwendbar)
  • n - den Speicher für reguläre Ausdrücke zur Beschleunigung deaktivieren (nur zusammen mit R verwendbar)
  • s - zeilenbasierte Suche nach regulären Ausdrücken (nur zusammen mit R verwendbar)
  • ^ - Treffer nur am String-Anfang (nur für Strings, nicht für reguläre Ausdrücke;

spielt bei HTML-Links keine Rolle)

  • $ - Treffer nur am String-Ende (nur für Strings, nicht für reguläre Ausdrücke;

spielt bei HTML-Links keine Rolle)

  • V - Umgebungsvariablen im Ersatzmuster interpretieren (dazu muss ProxyHTMLInterp aktiv sein)
  • Das Format im Ersatzmuster ist ${Variablenname|Standardwert}
  • Wenn die entsprechende Variable definiert ist, wird an der jeweiligen Stelle ihr Wert eingefügt, andernfalls der angegebene Standardwert (Letzterer ist jedoch optional)
  • v - Umgebungsvariablen im Suchmuster interpretieren (Details siehe bei V)

Als letztes Argument kann schließlich optional ein ap_expr-Ausdruck angegeben werden

  • Die Regel wird dann nur beachtet, wenn dieser Ausdruck zutrifft
  • Alle Einzelheiten über Ausdrücke stehen in der Beschreibung der Direktive <If> in Kapitel 6, Grundkonfiguration
ProxyHTMLBufSize Anzahl Bytes, um die der interne Puffer für den HTML-Proxy bei Bedarf erhöht wird

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLBufSize Bytes Standardwert 8192

Während des Link-Rewritings muss der Parser Nicht-HTML-Inhalte wie CSS und JavaScript in einem Puffer zwischenspeichern

  • Wenn dieser Puffer zu klein wird, dann wird er jeweils in Blöcken der hier angegebenen Byte-Anzahl vergrößert

Wenn Sie wissen, dass viele der zu verarbeitenden Dokumente Stylesheet- oder Skript-Blöcke enthalten, die größer als 8 KByte sind, dann sollten Sie den Wert

erhöhen, weil die dynamische Vergrößerung des Puffers während der Verarbeitung zu Lasten der Performance geht

Das folgende Beispiel stellt die doppelte Größe ein

ProxyHTMLBufSize 16384

ProxyHTMLCharsetOut Zeichensatz für die Ausgabe von mod_proxy_html festlegen

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLCharset Zeichensatz|* Standardwert UTF-8

Mit dieser Direktive können Sie einen Ausgabezeichensatz für das Ergebnis der HTML-Proxy-Verarbeitung angeben

  • Der spezielle Wert * verwendet den Zeichensatz des Ursprungsdokuments
  • Wenn es möglich ist, sollten Sie aus PerformanceGründen bei UTF-8 bleiben, weil libxml2 auch intern diesen Zeichensatz verwendet und alles andere zu Lasten der Performance geht

Hier dennoch ein Beispiel mit iso-latin-1

ProxyHTMLCharsetOut ISO-8859-1

ProxyHTMLDocType Eine HTML- oder XHTML-Doctype-Deklaration hinzufügen

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLDocType HTML|XHTML [Legacy] oder ProxyHTMLDocType fpi [SGML|XML] Standardwert nicht festgelegt

Diese Direktive setzt den <!DOCTYPE>-Header für die ausgegebenen HTML-Dokumente

  • In der ersten Form haben Sie die Wahl zwischen HTML (ergibt HTML 4.01)

und XHTML (XHTML 1.0)

  • Wenn Sie das Schlüsselwort Legacy hinzufügen, wird der Kompatibilitätsmodus Transitional aktiviert, der weniger genau ist als der Standardmodus Strict
  • Wenn die Direktive in diesem Format verwendet wird,

Apache als Proxy-Server 13.1

versucht mod_proxy_html zusätzlich, das HTML des verarbeiteten Dokuments im Sinne des gewählten Standards zu säubern; wo dies nicht gelingt, werden entsprechende Fehler mit dem LogLevel debug ins ErrorLog geschrieben

Die andere Möglichkeit ist die Angabe eines eigenen Formal Public Identifiers (FPI) wie beispielsweise "-//W3C//DTD HTML 4.01//EN"

  • In diesem Fall gibt der zusätzliche Parameter an, ob SGML/HTML- oder XML/XHTML-Syntax verwendet werden soll

ProxyHTMLEvents Liste von Attributen, die als Skript-Events interpretiert werden

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLEvents Attribut [Attribut ...] Standardwert nicht gesetzt

Eine Reihe von HTML-Attributen sind JavaScript-Event-Handler, beispielweise onclick oder onfocus

  • Diese können JavaScript-Anweisungen enthalten, in denen sich wiederum URLs befinden können, die umgeschrieben werden sollten

mod_proxy_html sucht in allen hier angegebenen Attributen danach und ersetzt sie

  • In der Standardkonfiguration werden alle HTML-4.0.1- und XHTML-1.0Event-Attribute angegeben

ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \ onmouseover onmousemove onmouseout onkeypress \ onkeydown onkeyup onfocus onblur onload \ onunload onsubmit onreset onselect onchange

Es ist eine gute Idee, auch das Attribut style hinzuzufügen

  • Dies löst zwar kein JavaScript aus, sondern enthält Inline-CSS, aber dies kann URL-Angaben wie background-image:url(...) enthalten, die gegebenenfalls geändert werden müssen

ProxyHTMLExtended Bestimmt, ob die Ersetzungsregeln auch auf Inline-Skripte, -Stylesheets und Skript-Ereignisse angewendet werden

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files>

Syntax ProxyHTMLExtended on|off Standardwert off

Wenn diese Direktive den Wert off hat, werden die Ersetzungsregeln nur auf HTML-Links angewendet, bei on auch auf Inline-Skripte, -Stylesheets und SkriptEreignisse (sofern die ProxyHTMLURLMap-Flags entsprechend gesetzt sind)

  • Wenn Sie diese Funktionalität einschalten, hat der Parser mehr zu tun, und die Performance kann leiden
  • Sie sollten on also nur verwenden, wenn es wirklich notwendig ist

ProxyHTMLFixups Beseitigung einfacher HTML-Fehler

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLFixups [lowercase] [dospath] [reset] Standardwert nicht gesetzt

Wenn diese Direktive gesetzt wird, kann mod_proxy_html einfache, verbreitete HTML-Link-Fehler beseitigen

  • lowercase - URLs werden in Kleinschreibung umgewandelt
  • dospath - Backslashes (\) werden in Forward-Slashes (/) umgewandelt
  • reset - Einstellungen der nächsthöheren Konfigurationsebene werden zurückgesetzt

Sie können beliebig viele dieser Werte angeben

Bitte beachten Sie, dass die vermeintlichen Fehler in manchen HTML-Dokumenten Absicht sind; verwenden Sie diese Direktive daher nur, wenn Sie genau wissen, dass der Backend-Server die entsprechenden Fehler produziert

ProxyHTMLInterp Ersetzungsregeln für jede Anfrage neu interpretieren

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLInterp on|off Standardwert off

Apache als Proxy-Server 13.1

Standardmäßig werden die Ersetzungsregeln beim Start von Apache vorkompiliert und dann einfach angewendet

  • Wenn Sie diese Direktive auf on setzen, werden sie dagegen bei jeder einzelnen Anfrage neu interpretiert
  • Dies beeinträchtigt die Performance, schafft aber beispielsweise die Möglichkeit, Umgebungsvariablen zu verwenden

ProxyHTMLLinks Legt die HTML-Elemente und -Attribute fest, die als Links gelten

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLLinks Element Attribut [Attribut ...] Standardwert nicht gesetzt

Diese Direktive legt die HTML-Elemente (Tags) und -Attribute fest, die als zu verarbeitende Links betrachtet werden

  • Sie benötigen für jedes Element eine Instanz dieser Direktive, können aber beliebig viele Attribute angeben
  • Die Standardkonfiguration definiert alle HTML-4.0.1- und XHTML-1.0-Links

ProxyHTMLLinks a href ProxyHTMLLinks area href ProxyHTMLLinks link href ProxyHTMLLinks img src longdesc usemap ProxyHTMLLinks object classid codebase data usemap ProxyHTMLLinks q cite ProxyHTMLLinks blockquote cite ProxyHTMLLinks ins cite ProxyHTMLLinks del cite ProxyHTMLLinks form action ProxyHTMLLinks input src usemap ProxyHTMLLinks head profile ProxyHTMLLinks base href ProxyHTMLLinks script src for

ProxyHTMLStripComments HTML-Kommentare entfernen

Seit Version 2.4, für ältere 2.x-Versionen als externes Zusatzmodul Modul mod_proxy_html Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyHTMLStripComments on|off Standardwert off

Wenn Sie diese Direktive auf on setzen, werden HTML-Kommentare aus dem verarbeiteten Dokument entfernt

  • Beachten Sie, dass dabei auch Skripte und Stylesheets verschwinden, die in Kommentare eingebettet sind
  • Außerdem würden auch die Anweisungen für kommentarbasierte Präprozessoren wie SSI und ESI gelöscht; daher müssen diese in der Filterkette vor mod_proxy_html verarbeitet werden (SSI und Filter)