mod_proxy_html
Beschreibung
Beschreibung | Umschreiben von HTML-Links, um sicherzustellen, dass sie von Client-Netzwerken in einem Proxy-Kontext adressierbar sind. |
Status | Basis |
Modul-Bezeichner | proxy_html_modul |
Quelldatei | mod_proxy_html.c |
Kompatibilität | Version 2.4 und höher. Als Drittanbieter-Modul für frühere 2.x-Versionen verfügbar |
Dieses Modul bietet einen Ausgabefilter zum Umschreiben von HTML-Links in einer Proxy-Situation, um sicherzustellen, dass Links für Benutzer außerhalb des Proxys funktionieren. Es dient demselben Zweck wie die Apache-Direktive ProxyPassReverse
für HTTP-Header und ist eine wesentliche Komponente eines Reverse-Proxys.
Wenn ein Unternehmen zum Beispiel einen Anwendungsserver unterappserver.example.com
hat, der nur vom internen Netzwerk des Unternehmens aus sichtbar ist, und einen öffentlichen Webserverwww.example.com,
möchte es vielleicht ein Gateway zum Anwendungsserver unter http://www.example.com/appserver/
bereitstellen .
Wenn der Anwendungsserver auf sich selbst verlinkt, müssen diese Links umgeschrieben werden, damit sie über das Gateway funktionieren. mod_proxy_html
dient dazu,<a href="http://appserver.example.com/foo/bar.html">foobar</a>
in<a href="http://www.example.com/appserver/foo/bar.html">foobar</a>
umzuschreiben, um es von außen zugänglich zu machen.
ProxyHTMLBufSize
Beschreibung | Legt die Puffergrößenerhöhung für die Pufferung von Inline-Skripten und Stylesheets fest. |
---|---|
Syntax | ProxyHTMLBufSize bytes
|
Standard | ProxyHTMLBufSize 8192
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Um in HTML-Dokumente eingebettete Nicht-HTML-Inhalte (Stylesheets und Skripte) zu parsen, muss mod_proxy_html
das gesamte Skript oder Stylesheet in einen Puffer einlesen. Dieser Puffer wird nach Bedarf erweitert, um das größte Skript oder Stylesheet in einer Seite aufzunehmen, und zwar in Byte-Schritten, die durch diese Direktive festgelegt werden.
Der Standardwert ist 8192 und funktioniert für fast alle Seiten gut. Wenn Sie jedoch wissen, dass Sie Seiten mit Stylesheets und/oder Skripten, die größer als 8K sind (d.h. für ein einzelnes Skript oder Stylesheet, NICHT insgesamt), als Proxy verwenden, ist es effizienter, eine größere Puffergröße einzustellen und zu vermeiden, dass die Größe des Puffers während einer Anfrage dynamisch angepasst werden muss.
ProxyHTMLCharsetOut
Beschreibung | Geben Sie einen Zeichensatz für die mod_proxy_html-Ausgabe an. |
---|---|
Syntax | ProxyHTMLCharsetOut Zeichensatz | *
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Hiermit wird eine Kodierung für die mod_proxy_html-Ausgabe ausgewählt. Sie sollte normalerweise nicht verwendet werden, da jede Änderung der Standardkodierung UTF-8
(Unicode - wie intern von libxml2 verwendet) einen zusätzlichen Verarbeitungsaufwand bedeutet. Das spezielle Token ProxyHTMLCharsetOut *
erzeugt die Ausgabe in der gleichen Kodierung wie die Eingabe.
Beachten Sie, dass dies davon abhängt, dass mod_xml2enc
geladen ist.
ProxyHTMLDocType
Beschreibung | Legt eine HTML- oder XHTML-Dokumenttyp-Deklaration fest. |
---|---|
Syntax | ProxyHTMLDocType HTML|XHTML [Legacy] OR ProxyHTMLDocType fpi [SGML|XML]
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
In der ersten Form werden die Dokumente je nach der gewählten Option als HTML 4.01 oder XHTML 1.0 deklariert. Diese Option bestimmt auch, ob die HTML- oder XHTML-Syntax für die Ausgabe verwendet wird. Beachten Sie, dass das Format der Dokumente, die vom Backend-Server kommen, keine Rolle spielt: der Parser wird es automatisch verarbeiten. Wenn das optionale zweite Argument aufLegacy
gesetzt wird, werden die Dokumente als "Transitional" deklariert. Diese Option kann notwendig sein, wenn Sie Inhalte aus der Zeit vor 1998 als Proxy verwenden oder mit fehlerhaften Authoring/Publishing-Tools arbeiten.
In der zweiten Form wird Ihr eigenes FPI eingefügt. Das optionale zweite Argument bestimmt, ob die SGML/HTML- oder die XML/XHTML-Syntax verwendet werden soll.
Die Standardeinstellung ist das Weglassen jeglicher FPI, mit der Begründung, dass keine FPI besser ist als eine gefälschte. Wenn Ihr Backend anständiges HTML oder XHTML erzeugt, stellen Sie es entsprechend ein.
Wenn die erste Form verwendet wird, bereinigt mod_proxy_html auch den HTML-Code gemäß dem angegebenen Standard. Es kann nicht jeden Fehler beheben, aber es entfernt falsche Elemente und Attribute. Es protokolliert optional auch andere Fehler im LogLevel
Debug.
ProxyHTMLEnable
Beschreibung | Schaltet den proxy_html-Filter ein oder aus. |
---|---|
Syntax | ProxyHTMLEnable On|Off
|
Standard | ProxyHTMLEnable Aus
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter-Modul erhältlich. |
Ein einfacher Schalter, um den proxy_html-Filter zu aktivieren oder zu deaktivieren. Wenn mod_xml2enc
geladen ist, wird auch automatisch die Internationalisierungsunterstützung eingerichtet.
Beachten Sie, dass der proxy_html-Filter nur auf HTML-Daten (Content-Type text/html oder application/xhtml+xml) wirkt und wenn die Daten über einen Proxy übermittelt werden. Sie können dies (auf eigene Gefahr) außer Kraft setzen, indem Sie die Umgebungsvariable PROXY_HTML_FORCE setzen.
ProxyHTMLEvents
Beschreibung | Geben Sie Attribute an, die als Scripting-Ereignisse behandelt werden sollen. |
---|---|
Syntax | ProxyHTMLEvents Attribut [Attribut ...]
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Gibt ein oder mehrere Attribute an, die als Skripting-Ereignisse behandelt werden und auf die ProxyHTMLURLMaps
angewendet wird, wenn sie aktiviert sind. Sie können eine beliebige Anzahl von Attributen in einer oder mehrerenProxyHTMLEvents-Direktiven
angeben.
Normalerweise werden Sie dies global festlegen. Wenn Sie ProxyHTMLEvents
in mehr als einem Bereich festlegen, so dass einer den anderen überschreibt, müssen Sie in jedem dieser Bereiche einen vollständigen Satz angeben.
Eine Standardkonfiguration ist in proxy-html.confenthalten und definiert die Ereignisse in Standard-HTML 4 und XHTML 1.
ProxyHTMLExtended
Beschreibung | Legt fest, ob Links in Inline-Skripten, Stylesheets und Skriptereignissen repariert werden sollen. |
---|---|
Syntax | ProxyHTMLExtended On|Off
|
Standard | ProxyHTMLExtended Aus
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Bei der Einstellung " Aus"
werden HTML-Links gemäß denProxyHTMLURLMap-Richtlinien
umgeschrieben, aber Links, die in Javascript und CSS erscheinen, werden ignoriert.
Wenn diese Option auf Ein
gesetzt ist, werden alle Skriptereignisse (wie vonProxyHTMLEvents
bestimmt) und eingebettete Skripte oder Stylesheets auch von den ProxyHTMLURLMap-Regeln
verarbeitet, entsprechend den für jede Regel gesetzten Flags. Da dies mehr Parsing erfordert, ist die Leistung am besten, wenn Sie es nur aktivieren, wenn es unbedingt notwendig ist.
Sie müssen auch auf die übereinstimmenden Muster achten, da der Parser nicht weiß, was eine URL innerhalb eines eingebetteten Skripts oder Stylesheets ist. Insbesondere die erweiterte Übereinstimmung von /
führt wahrscheinlich zu falschen Übereinstimmungen.
ProxyHTMLFixups
Beschreibung | Korrekturen für einfache HTML-Fehler. |
---|---|
Syntax | ProxyHTMLFixups [Kleinbuchstaben] [dospath] [reset]
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Diese Richtlinie nimmt ein bis drei Argumente wie folgt entgegen:
Kleinschreibung
Urls werden in Kleinbuchstaben umgeschriebendospath
Backslashes in URLs werden in Schrägstriche umgeschrieben.zurücksetzen
Alle Optionen, die auf einer höheren Ebene in der Konfiguration festgelegt wurden, werden zurückgesetzt.
Seien Sie vorsichtig, wenn Sie diese verwenden. Die Korrekturen korrigieren bestimmte Autorenfehler, bergen aber auch das Risiko, dass Links, die ursprünglich korrekt waren, fälschlicherweise korrigiert werden. Verwenden Sie sie nur, wenn Sie wissen, dass Ihr Backend-Server defekt ist.
ProxyHTMLInterp
Beschreibung | Ermöglicht die Interpolation vonProxyHTMLURLMap-Regeln pro Anfrage.
|
---|---|
Syntax | ProxyHTMLInterp On|Off
|
Standard | ProxyHTMLInterp Aus
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter-Modul erhältlich |
Dies ermöglicht die Interpolation pro Anfrage in ProxyHTMLURLMap
Hin- und Von-Mustern.
Wenn die Interpolation nicht aktiviert ist, werden alle Regeln beim Start vorkompiliert. Mit Interpolation müssen sie für jede Anfrage neu kompiliert werden, was einen zusätzlichen Verarbeitungsaufwand bedeutet. Sie sollte daher nur bei Bedarf aktiviert werden.
ProxyHTMLLinks
Beschreibung | Geben Sie HTML-Elemente an, die URL-Attribute haben, die umgeschrieben werden sollen. |
---|---|
Syntax | ProxyHTMLLinks Element Attribut [attribute2 ...]
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Gibt Elemente an, die URL-Attribute haben, die mit Hilfe von Standard-ProxyHTMLURLMaps
umgeschrieben werden sollen. Sie benötigen eine ProxyHTMLLinks-Direktive
pro Element, aber sie kann eine beliebige Anzahl von Attributen haben.
Normalerweise werden Sie dies global festlegen. Wenn Sie ProxyHTMLLinks
in mehr als einem Bereich festlegen, so dass ein Bereich den anderen überschreibt, müssen Sie in jedem dieser Bereiche einen vollständigen Satz angeben.
Eine Standardkonfiguration ist in proxy-html.confenthalten und definiert die HTML-Links für Standard-HTML 4 und XHTML 1.
Beispiele aus proxy-html.conf
ProxyHTMLLinks a hrefProxyHTMLLinks area hrefProxyHTMLLinks link hrefProxyHTMLLinks img src longdesc usemapProxyHTMLLinks object classid codebase data usemapProxyHTMLLinks q citeProxyHTMLLinks blockquote citeProxyHTMLLinks ins citeProxyHTMLLinks del citeProxyHTMLLinks form actionProxyHTMLLinks input src usemapProxyHTMLLinks head profileProxyHTMLLinks base hrefProxyHTMLLinks script src for
ProxyHTMLMeta
Beschreibung | Schaltet das zusätzliche Vorparsen von Metadaten in HTML<head>-Abschnitten ein oder aus.
|
---|---|
Syntax | ProxyHTMLMeta Ein|Aus
|
Standard | ProxyHTMLMeta Aus
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter-Modul erhältlich. |
Dies schaltet das Pre-Parsing von Metadaten in HTML <head>-Abschnitten
ein oder aus.
Wenn Sie ProxyHTMLMeta nicht benötigen, können Sie durch das Überspringen dieses Parse-Schrittes eine kleine Leistungssteigerung erzielen. Er ist jedoch manchmal notwendig, damit die Internationalisierung korrekt funktioniert.
ProxyHTMLMeta
hat zwei Auswirkungen. Erstens und am wichtigsten ermöglicht es die Erkennung von Zeichenkodierungen, die in der Form
<meta http-equiv="Content-Type" content="text/html;charset=foo">
oder, im Falle eines XHTML-Dokuments, eine XML-Deklaration. Sie ist NICHT erforderlich, wenn der Zeichensatz in einem echten HTTP-Header des Backend-Servers deklariert ist (was immer vorzuziehen ist), oder wenn das Dokument utf-8 (Unicode) oder eine Untermenge wie ASCII ist. Sie können auch darauf verzichten, wenn Dokumente einen Standard verwenden, der mit xml2EncDefault
deklariert wurde, aber das birgt das Risiko, eine falsche Deklaration zu verbreiten. Ein ProxyHTMLCharsetOut
kann dieses Risiko beseitigen, stellt aber wahrscheinlich einen größeren Verarbeitungsaufwand dar als die Aktivierung von ProxyHTMLMeta.
Die andere Auswirkung der Aktivierung von ProxyHTMLMeta
ist, dass alle <meta http-equiv=...>-Deklarationen
geparst und in echte HTTP-Header umgewandelt werden, was dem ursprünglichen Zweck dieser Form des HTML <meta>-Elements entspricht.
Warnung
Da ProxyHTMLMeta alle http-equiv-Elemente
zu HTTP-Headern macht, ist es wichtig, dass Sie diese Funktion nur in Fällen aktivieren, in denen Sie dem HTML-Inhalt ebenso vertrauen wie dem Upstream-Server. Wenn der HTML-Inhalt von böswilligen Akteuren kontrolliert wird, ist es für diese möglich, beliebige, möglicherweise bösartige HTTP-Header in die Antworten Ihres Servers einzufügen.
ProxyHTMLStripComments
Beschreibung | Legt fest, ob HTML-Kommentare entfernt werden sollen. |
---|---|
Syntax | ProxyHTMLStripKommentare Ein|Aus
|
Standard | ProxyHTMLStripKommentare Aus
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter erhältlich |
Diese Direktive veranlasst mod_proxy_html, HTML-Kommentare zu entfernen. Beachten Sie, dass dadurch auch alle in Kommentare eingebetteten Skripte oder Stile gelöscht werden (eine Unart, die 1995/6 mit Netscape 2 zugunsten älterer Browser eingeführt wurde, aber auch heute noch verwendet wird). Sie kann auch mit kommentarbasierten Prozessoren wie SSI oder ESI interferieren: Stellen Sie sicher, dass Sie diese in der Filterkette vor mod_proxy_html ausführen, wenn Sie Kommentare entfernen!
ProxyHTMLURLMap
Beschreibung | Definiert eine Regel zum Umschreiben von HTML-Links |
---|---|
Syntax | ProxyHTMLURLMap from-pattern to-pattern [flags] [cond]
|
Kontext | Serverkonfiguration, virtueller Host, Verzeichnis |
Status | Basis |
Modul | mod_proxy_html |
Kompatibilität | Version 2.4 und höher; für frühere 2.x-Versionen als Drittanbieter-Modul erhältlich. |
Dies ist die wichtigste Direktive zum Umschreiben von HTML-Links. Wenn beim Parsen eines Dokuments ein Link-Ziel mit from-pattern übereinstimmt, wird der übereinstimmende Teil in to-pattern umgeschrieben, modifiziert durch alle übergebenen Flags und die DirektiveProxyHTMLExtended
. Nur die mit der Direktive ProxyHTMLLinks
angegebenen Elemente werden als HTML-Links betrachtet.
Das optionale dritte Argument kann einen der folgendenFlags definieren. Bei den Flags wird die Groß- und Kleinschreibung beachtet.
Option | Beschreibung |
---|---|
h | HTML-Links ignorieren (unverändert durchlassen) |
e | Skripting-Ereignisse ignorieren (unverändert durchlassen) |
c | Eingebettete Skript- und Stilabschnitte werden unverändert weitergegeben |
L | Letzte Übereinstimmung.Wenn diese Regel zutrifft, werden keine weiteren Regeln angewandt (beachten Sie, dass dies bei HTML-Links automatisch geschieht) |
l | Im Gegensatz zu L. Überschreibt das Standardverhalten von HTML-Links, die nur einmal geändert werden können |
R | Verwenden Sie Regular Expression matching-and-replace. from-pattern ist ein regexp, und to-pattern eine Ersetzungszeichenfolge, die auf dem regexp basieren kann.Der Regexp-Speicher wird unterstützt: Sie können Klammern () in from-pattern verwenden und die Übereinstimmungen mit $1 bis $9 in to-pattern abrufen.Die Logik beginnt mit HTML-Links,enthält aber auch Skripting-Events und eingebettete Skript- und Stilabschnitte
|
x | POSIX-erweiterte reguläre Ausdrücke verwenden.Nur mit R anwendbar |
i | Groß- und Kleinschreibung wird nicht berücksichtigt.Nur mit R anwendbar |
n | Regexp-Speicher deaktivieren (für Geschwindigkeit).Nur anwendbar mit R |
s | Zeilenbasierter Regexp-Abgleich.Nur mit R anwendbar |
^ | Nur am Anfang abgleichen.Dies gilt nur für den Abgleich von Zeichenfolgen (nicht für Regexps) und ist für HTML-Links irrelevant |
$ | Nur am Ende abgleichen.Dies gilt nur für den Abgleich von Zeichenfolgen (nicht für Regexps) und ist für HTML-Links irrelevant |
V | default} wird durch den Wert der Umgebungsvariablen varname ersetzt.Wenn diese nicht gesetzt ist, wird sie durch den Standardwert ersetzt.Das |default ist optional.HINWEIS: Die Interpolation wird nur aktiviert, wennProxyHTMLInterp auf Ein steht
|
v | Interpolieren von Umgebungsvariablen in from-pattern . Unterstützt werden die oben genannten Patterns.HINWEIS: Die Interpolation wird nur aktiviert, wennProxyHTMLInterp auf Ein steht
|
Das optionale vierte cond-Argument definiert eine Bedingung, die pro Anfrage ausgewertet wird, sofernProxyHTMLInterp
eingeschaltet ist. Wird die Bedingung mit FALSE ausgewertet, wird die Map in dieser Anfrage nicht angewandt. Bei TRUE oder wenn keine Bedingung definiert ist, wird die Map angewandt.
Eine Bedingung wird durch den Expression Parser ausgewertet. Darüber hinaus wird auch die einfachere Syntax der Bedingungen in mod_proxy_html 3.x für HTTPD 2.0 und 2.2 unterstützt.
mod_proxy_html wurde ursprünglich von WebÞing entwickelt, dessen ausführliche Dokumentation für die Benutzer nützlich sein könnte.