Apache/13 Proxy und Cache/Proxy/Proxy-Direktiven: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „=== Proxy-Direktiven === Im Folgenden werden sämtliche Direktiven des Moduls mod_proxy vorgestellt. Bitte beachten Sie, dass einige neuere Funktionen, insbesondere im Zusammenhang mit dem Proxy-Load-Balancing, offiziell undokumentiert sind und zudem noch weiterentwickelt werden. Über gravierende Neuerungen werden Sie jeweils auf der Website zum Buch informiert. <Proxy> ... </Proxy> Einstellungen für Proxy-Ressourcen Modul mod_proxy Kontext Serve…“ |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
=== Proxy-Direktiven === | === Proxy-Direktiven === | ||
Im Folgenden werden sämtliche Direktiven des Moduls mod_proxy vorgestellt | Im Folgenden werden sämtliche Direktiven des Moduls mod_proxy vorgestellt | ||
Bitte beachten Sie, dass einige neuere Funktionen, insbesondere im Zusammenhang mit dem Proxy-Load-Balancing, offiziell undokumentiert sind und zudem | Bitte beachten Sie, dass einige neuere Funktionen, insbesondere im Zusammenhang mit dem Proxy-Load-Balancing, offiziell undokumentiert sind und zudem noch weiterentwickelt werden. Über gravierende Neuerungen werden Sie jeweils auf der Website zum Buch informiert | ||
noch weiterentwickelt werden. Über gravierende Neuerungen werden Sie jeweils | |||
auf der Website zum Buch informiert | |||
<Proxy> ... </Proxy> | <Proxy> ... </Proxy> | ||
Einstellungen für Proxy-Ressourcen | Einstellungen für Proxy-Ressourcen | ||
Modul mod_proxy | Modul mod_proxy | ||
Kontext Server, <VirtualHost> | Kontext Server, <VirtualHost> | ||
| Zeile 13: | Zeile 11: | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Direktiven, die in diesem Container stehen, gelten ausschließlich für ProxyAnfragen, die die angegebene URL anfordern | Direktiven, die in diesem Container stehen, gelten ausschließlich für ProxyAnfragen, die die angegebene URL anfordern | ||
Ausdrücke ist dagegen die Variante <ProxyMatch> zuständig | * Sie können Shell-Wildcards verwenden, um mehrere URLs durch ein Muster zu beschreiben; für echte reguläre Ausdrücke ist dagegen die Variante <ProxyMatch> zuständig | ||
einfach * verwendet, um Regeln für sämtliche Proxy-Anfragen zu bilden | * In vielen Fällen wird einfach * verwendet, um Regeln für sämtliche Proxy-Anfragen zu bilden | ||
Das folgende Beispiel wurde bereits im Zusammenhang gezeigt; es erlaubt nur Rechnern aus dem lokalen Netzwerk Proxy-Anfragen | Das folgende Beispiel wurde bereits im Zusammenhang gezeigt; es erlaubt nur Rechnern aus dem lokalen Netzwerk Proxy-Anfragen | ||
<Proxy *> | <Proxy *> | ||
Order deny,allow | Order deny,allow | ||
| Zeile 24: | Zeile 22: | ||
</Proxy> | </Proxy> | ||
Das nächste Beispiel verhindert, dass irgendjemand über den Forward-Proxy auf die Site http://www.trojan-horse.com zugreift | Das nächste Beispiel verhindert, dass irgendjemand über den Forward-Proxy auf die Site http://www.trojan-horse.com zugreift | ||
<Proxy http://www.trojan-horse.com/*> | <Proxy http://www.trojan-horse.com/*> | ||
Order deny,allow | Order deny,allow | ||
| Zeile 30: | Zeile 28: | ||
</Proxy> | </Proxy> | ||
Ein spezieller Verwendungszweck dieses Containers ergibt sich im Zusammenhang mit dem Proxy-Load-Balancing | Ein spezieller Verwendungszweck dieses Containers ergibt sich im Zusammenhang mit dem Proxy-Load-Balancing | ||
* Hier wird als URL-Muster ein Balancer-Aliasname mit dem Pseudoprotokoll balancer:// angegeben; innerhalb des Containers stehen BalancerMember-Direktiven zur Definition der verschiedenen EinzelServer | |||
* Beispiel | |||
<Proxy balancer://music> | <Proxy balancer://music> | ||
| Zeile 37: | Zeile 37: | ||
</Proxy> | </Proxy> | ||
Der Alias balancer://music kann anschließend verwendet werden, um Pfade der verschiedenen Server per Reverse-Proxy-Funktionalität einzubinden | Der Alias balancer://music kann anschließend verwendet werden, um Pfade der verschiedenen Server per Reverse-Proxy-Funktionalität einzubinden | ||
* Beispiel | |||
ProxyPass /mp3 balancer://music/mp3 | ProxyPass /mp3 balancer://music/mp3 | ||
<ProxyMatch> ... </ProxyMatch> | <ProxyMatch> ... </ProxyMatch> | ||
Einstellungen für Gruppen von Proxy-Ressourcen, auf die ein RegExp zutrifft | Einstellungen für Gruppen von Proxy-Ressourcen, auf die ein RegExp zutrifft | ||
Modul mod_proxy | Modul mod_proxy | ||
Kontext Server, <VirtualHost> | Kontext Server, <VirtualHost> | ||
| Zeile 48: | Zeile 49: | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Dieser Container funktioniert genau wie <Proxy>, ermöglicht aber die Angabe eines Perl-kompatiblen regulären Ausdrucks als URL-Muster | Dieser Container funktioniert genau wie <Proxy>, ermöglicht aber die Angabe eines Perl-kompatiblen regulären Ausdrucks als URL-Muster | ||
* Das folgende Beispiel sorgt für die Deflate-Komprimierung aller GIF-, JPEG- und PNG-Bilder, die der Apache-Proxy ausliefert | |||
<ProxyMatch \.(gif)|(jpg)|(png)$> | <ProxyMatch \.(gif)|(jpg)|(png)$> | ||
SetOutputFilter DEFLATE | SetOutputFilter DEFLATE | ||
</ProxyMatch> | </ProxyMatch> | ||
ProxyRequests | ProxyRequests | ||
Proxy-Anfragen zulassen/verbieten | Proxy-Anfragen zulassen/verbieten | ||
Modul mod_proxy | Modul mod_proxy | ||
Kontext Server, <VirtualHost> | Kontext Server, <VirtualHost> | ||
| Zeile 61: | Zeile 63: | ||
Standardwert Off | Standardwert Off | ||
Wenn Sie diese Direktive auf On setzen, werden Proxy-Anfragen zugelassen | Wenn Sie diese Direktive auf On setzen, werden Proxy-Anfragen zugelassen | ||
* Weiter oben wurde bereits gezeigt, wie Sie dafür einen virtuellen Host mit einer bestimmten Portnummer einrichten können | |||
* Es ist sehr wichtig, den Server gegen Zugriffe durch fremde Benutzer abzusichern, bevor Sie ProxyRequests einschalten | |||
ProxyRemote | ProxyRemote Bestimmte Anfragen an einen anderen Proxy weiterreichen | ||
Bestimmte Anfragen an einen anderen Proxy weiterreichen | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyRemote Muster Remote-Server Standardwert nicht gesetzt | ||
Syntax ProxyRemote Muster Remote-Server | |||
Standardwert nicht gesetzt | |||
Diese Direktive leitet Proxy-Anfragen, die der lokale Proxy empfangen hat, an | Diese Direktive leitet Proxy-Anfragen, die der lokale Proxy empfangen hat, an einen anderen Proxy-Server weiter | ||
einen anderen Proxy-Server weiter | * Der erste Parameter ist das URL-Muster der Proxy-Anfragen, der zweite die vollständige URL des Remote-Servers | ||
Proxy-Anfragen, der zweite die vollständige URL des Remote-Servers | * Das folgende Beispiel leitet alle Proxy-Anfragen an otherproxy.mynet.de weiter | ||
ProxyRemote * http://otherproxy.mynet.de | ProxyRemote * http://otherproxy.mynet.de | ||
ProxyRemoteMatch | ProxyRemoteMatch Gruppen von Anfragen weiterreichen, die einem RegExp entsprechen | ||
Gruppen von Anfragen weiterreichen, die einem RegExp entsprechen | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyRemoteMatch RegExp Remote-Server Standardwert nicht gesetzt | ||
Syntax ProxyRemoteMatch RegExp Remote-Server | |||
Standardwert nicht gesetzt | |||
Die Direktive ProxyRemoteMatch funktioniert genau wie ProxyRemote mit dem | Die Direktive ProxyRemoteMatch funktioniert genau wie ProxyRemote mit dem Unterschied, dass das URL-Muster für die Proxy-Anfragen ein regulärer Ausdruck ist | ||
Unterschied, dass das URL-Muster für die Proxy-Anfragen ein regulärer Ausdruck | * Hier sehen Sie ein Beispiel, das alle Proxy-Anfragen für Sounddateien (mp3, wav und aif) an soundproxy.mynet.de weiterreicht | ||
ProxyRemoteMatch \.(mp3|wav|aif)$ \ | ProxyRemoteMatch \.(mp3|wav|aif)$ \ | ||
http://soundproxy.mynet.de | http://soundproxy.mynet.de | ||
NoProxy | NoProxy Adressen, für die kein Remote-Proxy verwendet wird | ||
Adressen, für die kein Remote-Proxy verwendet wird | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | |||
Syntax NoProxy Host [Host ...] | Syntax NoProxy Host [Host ...] | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
| Zeile 102: | Zeile 97: | ||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
Diese Direktive nimmt die angegebenen Hosts oder Adressblöcke von der Vermittlung der Anfrage an einen weiteren Proxy durch ProxyRemote aus | Diese Direktive nimmt die angegebenen Hosts oder Adressblöcke von der Vermittlung der Anfrage an einen weiteren Proxy durch ProxyRemote aus | ||
Liste der Hostnamen beziehungsweise IP-Adressen sind folgende Schreibweisen | * Für die Liste der Hostnamen beziehungsweise IP-Adressen sind folgende Schreibweisen erlaubt | ||
erlaubt | |||
* Hostname | * Hostname ein vollständiger DNS-Hostname – Beispiel: www.mynet.de | ||
ein vollständiger DNS-Hostname – Beispiel: www.mynet.de | * Domain-Name ein beliebig kurzes Teilstück, mit dem DNS-Namen enden können; stets mit führendem Punkt, um sie von Hostnamen zu unterscheiden – Beispiele | ||
* Domain-Name | |||
ein beliebig kurzes Teilstück, mit dem DNS-Namen enden können; stets mit | |||
führendem Punkt, um sie von Hostnamen zu unterscheiden – Beispiele | |||
.mynet.de oder .de | .mynet.de oder .de | ||
* IP-Adresse | * IP-Adresse Die IP-Adresse eines einzelnen Hosts – Beispiel: 196.23.17.52 | ||
Die IP-Adresse eines einzelnen Hosts – Beispiel: 196.23.17.52 | * Teilnetz ein Adressfragment, das ein bestimmtes IP-Adress-Teilnetz kennzeichnet; | ||
* Teilnetz | |||
ein Adressfragment, das ein bestimmtes IP-Adress-Teilnetz kennzeichnet; | |||
optional mit CIDR-Netzwerkbits oder Teilnetzmaske – Beispiele: 196.23, 196.23.17.0/24 oder 196.23.17.0/255.255.255.0 | optional mit CIDR-Netzwerkbits oder Teilnetzmaske – Beispiele: 196.23, 196.23.17.0/24 oder 196.23.17.0/255.255.255.0 | ||
Nähere Erläuterungen zu diesen verschiedenen Adressangaben finden Sie in | Nähere Erläuterungen zu diesen verschiedenen Adressangaben finden Sie in Kapitel 6, »Grundkonfiguration«, bei der Beschreibung der Direktive Allow | ||
Kapitel 6, »Grundkonfiguration«, bei der Beschreibung der Direktive Allow | |||
Hier ein Komplettbeispiel, das Anfragen für einen bestimmten Host und eine | Hier ein Komplettbeispiel, das Anfragen für einen bestimmten Host und eine Domain aus der ProxyRemote-Weiterleitung ausschließt | ||
Domain aus der ProxyRemote-Weiterleitung ausschließt | |||
# Alle Proxy-Anfragen an otherproxy.mynet.de weiterleiten | # Alle Proxy-Anfragen an otherproxy.mynet.de weiterleiten ProxyRemote * otherproxy.mynet.de | ||
ProxyRemote * otherproxy.mynet.de | # Einzelne Adressen ausschließen NoProxy .somenet.de www.othernet.de | ||
# Einzelne Adressen ausschließen | |||
NoProxy .somenet.de www.othernet.de | |||
ProxyBadHeader | ProxyBadHeader Bestimmt den Umgang mit ungültigen Antwort-Headern | ||
Bestimmt den Umgang mit ungültigen Antwort-Headern | |||
Seit Version 2.0.44 | Seit Version 2.0.44 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyBadHeader IsError | Ignore | StartBody Standardwert IsError | ||
Syntax ProxyBadHeader IsError | Ignore | StartBody | |||
Standardwert IsError | |||
Mithilfe dieser Direktive wird festgelegt, was geschehen soll, wenn die Antwort | Mithilfe dieser Direktive wird festgelegt, was geschehen soll, wenn die Antwort eines entfernten Servers einen Fehler enthält | ||
eines entfernten Servers einen Fehler enthält | * Folgende Verhaltensweisen sind möglich | ||
möglich | |||
* IsError: Apache beendet die Verarbeitung der Antwort und sendet dem Client eine Meldung mit dem Status 502 Bad Gateway | * IsError: Apache beendet die Verarbeitung der Antwort und sendet dem Client eine Meldung mit dem Status 502 Bad Gateway | ||
* Ignore: Der fehlerhafte Header wird ignoriert und einfach weitergeleitet | * Dies ist die Voreinstellung | ||
* StartBody: Die Verarbeitung von Headern wird abgebrochen; der Rest der | * Ignore: Der fehlerhafte Header wird ignoriert und einfach weitergeleitet | ||
Antwort wird als Body betrachtet | * StartBody: Die Verarbeitung von Headern wird abgebrochen; der Rest der Antwort wird als Body betrachtet | ||
ProxyBlock | ProxyBlock Ressourcen, für die Apache nicht als Proxy fungieren soll | ||
Ressourcen, für die Apache nicht als Proxy fungieren soll | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | |||
Syntax ProxyBlock * | Wort | Host | Domain [Wort|Host|Domain ...] | Syntax ProxyBlock * | Wort | Host | Domain [Wort|Host|Domain ...] | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
ProxyBlock ermöglicht die Angabe beliebiger Adressbestandteile – wenn diese | ProxyBlock ermöglicht die Angabe beliebiger Adressbestandteile – wenn diese gefunden werden, wird die entsprechende Proxy-Anfrage abgelehnt | ||
gefunden werden, wird die entsprechende Proxy-Anfrage abgelehnt | * Die möglichen Elemente bedeuten Folgendes | ||
* Wort: ein einzelner Partikel – z.B | * Wort: ein einzelner Partikel – z.B | ||
* mynet | |||
* Host: ein vollständiger Hostname – beispielsweise www.mynet.de | * Host: ein vollständiger Hostname – beispielsweise www.mynet.de | ||
* Domain: ein beliebiges Teilstück eines Domain-Namens – etwa mynet.de | * Domain: ein beliebiges Teilstück eines Domain-Namens – etwa mynet.de | ||
Das folgende Beispiel deaktiviert den Proxy-Zugriff auf alle Adressen, die den | Das folgende Beispiel deaktiviert den Proxy-Zugriff auf alle Adressen, die den Bestandteil »pause« enthalten | ||
Bestandteil »pause« enthalten | |||
ProxyBlock pause | ProxyBlock pause | ||
ProxyDomain | ProxyDomain Domain-Name, der bei Proxy-Anfragen im Intranet automatisch angehängt wird | ||
Domain-Name, der bei Proxy-Anfragen im Intranet automatisch angehängt wird | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyDomain Domain Standardwert nicht gesetzt | ||
Syntax ProxyDomain Domain | |||
Standardwert nicht gesetzt | |||
Diese Direktive ermöglicht die Definition eines Domain-Suffixes, das der Proxy | Diese Direktive ermöglicht die Definition eines Domain-Suffixes, das der Proxy automatisch an Hostnamen ohne Domain anhängt | ||
automatisch an Hostnamen ohne Domain anhängt | * Beispiel | ||
ProxyDomain .mynet.de | ProxyDomain .mynet.de | ||
Falls der Proxy eine Anfrage mit der Adresse www erhält, wird diese automatisch | Falls der Proxy eine Anfrage mit der Adresse www erhält, wird diese automatisch zu www.mynet.de ergänzt | ||
zu www.mynet.de ergänzt | * Dies ist nützlich, wenn die Rechner in Ihrem Intranet ohne Domain-Suffix angesprochen werden | ||
ohne Domain-Suffix angesprochen werden | |||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
ProxyErrorOverride | ProxyErrorOverride Bestimmt, ob der Proxy Fehlerseiten überschreiben soll | ||
Bestimmt, ob der Proxy Fehlerseiten überschreiben soll | |||
Seit Version 2.0 | Seit Version 2.0 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyErrorOverride On|Off Standardwert Off | ||
Syntax ProxyErrorOverride On|Off | |||
Standardwert Off | |||
Wenn Sie diese Direktive auf On setzen, ersetzt Ihr Proxy die Fehlermeldungsseiten entfernter Server durch seine eigenen | Wenn Sie diese Direktive auf On setzen, ersetzt Ihr Proxy die Fehlermeldungsseiten entfernter Server durch seine eigenen | ||
ErrorDocument anpassen können (siehe Kapitel 8, »Weiterleitungen und Indizes«), können Sie auf diese Weise auch im Proxy-Betrieb Ihre eigenen Fehlerseiten verwenden | * Da Sie Fehlermeldungen mithilfe von ErrorDocument anpassen können (siehe Kapitel 8, »Weiterleitungen und Indizes«), können Sie auf diese Weise auch im Proxy-Betrieb Ihre eigenen Fehlerseiten verwenden | ||
neben den angezeigten URLs auch das Aussehen der Fehlermeldungen modifiziert werden kann | * Dies ist besonders bei einem Reverse-Proxy nützlich, weil damit neben den angezeigten URLs auch das Aussehen der Fehlermeldungen modifiziert werden kann | ||
ProxyAddHeaders | ProxyAddHeaders Bestimmt, ob der Proxy seine Informationen zu X-Forwarded*-Headern hinzufügen soll | ||
Bestimmt, ob der Proxy seine Informationen zu X-Forwarded*-Headern hinzufügen soll | |||
Seit Version 2.3.10 | Seit Version 2.3.10 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | Syntax ProxyAddHeaders On|Off Standardwert On | ||
Syntax ProxyAddHeaders On|Off | |||
Standardwert On | |||
Normalerweise fügt Apache in seiner Funktion als Proxy Informationen zu den | Normalerweise fügt Apache in seiner Funktion als Proxy Informationen zu den HTTP-Erweiterungs-Headern X-Forwarded-For, X-Forwarded-Host und X-Forwarded-Server hinzu | ||
HTTP-Erweiterungs-Headern X-Forwarded-For, X-Forwarded-Host und X-Forwarded-Server hinzu | * Wenn Sie dies explizit verhindern möchten, können Sie es wie folgt deaktivieren | ||
wie folgt deaktivieren | |||
ProxyAddHeaders off | ProxyAddHeaders off | ||
ProxySourceAddress | ProxySourceAddress Lokale IP-Adresse für ausgehende Proxy-Verbindungen | ||
Lokale IP-Adresse für ausgehende Proxy-Verbindungen | |||
Seit Version 2.3.9 | Seit Version 2.3.9 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | |||
Syntax ProxySourceAddress IP-Adresse | Syntax ProxySourceAddress IP-Adresse Standardwert nicht gesetzt | ||
Standardwert nicht gesetzt | |||
Mit dieser Direktive können Sie festlegen, dass ausgehende Proxy-Verbindungen | Mit dieser Direktive können Sie festlegen, dass ausgehende Proxy-Verbindungen eine bestimmte lokale IP-Adresse als Quelle verwenden sollen | ||
eine bestimmte lokale IP-Adresse als Quelle verwenden sollen | * Wenn Sie dies nicht tun, wird für gewöhnlich diejenige IP-Adresse verwendet, über die die ursprüngliche Client-Anfrage empfangen wurde | ||
nicht tun, wird für gewöhnlich diejenige IP-Adresse verwendet, über die die | * Beispiel | ||
ursprüngliche Client-Anfrage empfangen wurde | |||
ProxySourceAddress 192.168.0.8 | ProxySourceAddress 192.168.0.8 | ||
ProxyFtpDirCharset | ProxyFtpDirCharset Legt den Zeichensatz für FTP-Verzeichnislistings fest | ||
Legt den Zeichensatz für FTP-Verzeichnislistings fest | |||
Seit Version 2.2.7 | Seit Version 2.2.7 | ||
Modul mod_proxy_ftp; vor 2.3.5 mod_proxy | Modul mod_proxy_ftp; vor 2.3.5 mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | Syntax ProxyFtpDirCharset Zeichensatz Standardwert ISO-8859-1 | ||
Syntax ProxyFtpDirCharset Zeichensatz | |||
Standardwert ISO-8859-1 | |||
Diese Direktive bestimmt den Zeichensatz, der verwendet wird, wenn mod_ | Diese Direktive bestimmt den Zeichensatz, der verwendet wird, wenn mod_ | ||
proxy_ftp ein FTP-Verzeichnislisting erzeugt | proxy_ftp ein FTP-Verzeichnislisting erzeugt | ||
das folgende Beispiel legt UTF-8 fest | * Der Standardwert ist ISO-8859-1; | ||
das folgende Beispiel legt UTF-8 fest | |||
ProxyFtpDirCharset UTF-8 | ProxyFtpDirCharset UTF-8 | ||
ProxyFtpEscapeWildcards | ProxyFtpEscapeWildcards Escaping von Platzhalterzeichen beim Senden an den FTP-Server aktivieren/deaktivieren | ||
Escaping von Platzhalterzeichen beim Senden an den FTP-Server aktivieren/deaktivieren | |||
Seit Version 2.3-beta | Seit Version 2.3-beta Modul mod_proxy_ftp Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Modul mod_proxy_ftp | Syntax ProxyFtpEscapeWildcards on|off Standardwert on | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | |||
Syntax ProxyFtpEscapeWildcards on|off | |||
Standardwert on | |||
Standardmäßig werden die Platzhalterzeichen *, ?, [, { und ~ mit einem Backslash escaped, bevor sie an den FTP-Server gesendet werden | Standardmäßig werden die Platzhalterzeichen *, ?, [, { und ~ mit einem Backslash escaped, bevor sie an den FTP-Server gesendet werden | ||
können damit nicht umgehen; in diesem Fall können Sie das Escaping wie folgt | * Manche FTP-Server können damit nicht umgehen; in diesem Fall können Sie das Escaping wie folgt ausschalten | ||
ausschalten | |||
ProxyFtpEscapeWildcards off | ProxyFtpEscapeWildcards off | ||
| Zeile 264: | Zeile 221: | ||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
ProxyFtpListOnWildcard | ProxyFtpListOnWildcard Bei Platzhalterzeichen im Dateinamen eine Dateiliste oder eine Datei anfordern | ||
Bei Platzhalterzeichen im Dateinamen eine Dateiliste oder eine Datei anfordern | |||
Seit Version 2.3-beta | Seit Version 2.3-beta Modul mod_proxy_ftp Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Modul mod_proxy_ftp | Syntax ProxyFtpListOnWildcard on|off Standardwert on | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | |||
Syntax ProxyFtpListOnWildcard on|off | |||
Standardwert on | |||
Wenn die angeforderte Datei eines der Platzhalterzeichen *, ?, [, { oder ~ enthält, fordert Apache normalerweise eine Dateiliste an, auf die das Dateimuster passt | Wenn die angeforderte Datei eines der Platzhalterzeichen *, ?, [, { oder ~ enthält, fordert Apache normalerweise eine Dateiliste an, auf die das Dateimuster passt | ||
Wenn Sie stattdessen Dateien anfordern möchten, die diese Platzhalter im Dateinamen enthalten, müssen Sie diese Direktive explizit auf off setzen | Wenn Sie stattdessen Dateien anfordern möchten, die diese Platzhalter im Dateinamen enthalten, müssen Sie diese Direktive explizit auf off setzen | ||
ProxyFtpListOnWildcard off | ProxyFtpListOnWildcard off | ||
ProxyIOBufferSize | ProxyIOBufferSize Größe des Proxy-Datenpuffers | ||
Größe des Proxy-Datenpuffers | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyIOBufferSize Bytes Standardwert 8192 | ||
Syntax ProxyIOBufferSize Bytes | |||
Standardwert 8192 | |||
Diese Direktive bestimmt die Größe des internen Puffers, den mod_proxy für gelesene, aber noch nicht wieder ausgegebene Daten verwendet | Diese Direktive bestimmt die Größe des internen Puffers, den mod_proxy für gelesene, aber noch nicht wieder ausgegebene Daten verwendet | ||
8.192 ist der Höchstwert; in aller Regel gibt es keinen Grund, einen kleineren | * Die Voreinstellung | ||
Wert anzugeben | 8.192 ist der Höchstwert; in aller Regel gibt es keinen Grund, einen kleineren Wert anzugeben | ||
ProxyMaxForwards | ProxyMaxForwards Höchstzahl von Proxys, durch die eine Anfrage weitergeleitet wird | ||
Höchstzahl von Proxys, durch die eine Anfrage weitergeleitet wird | |||
Seit Version 2.0 | Seit Version 2.0 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyMaxForwards Anzahl Standardwert 10 | ||
Syntax ProxyMaxForwards Anzahl | |||
Standardwert 10 | |||
Mithilfe von ProxyMaxForwards können Sie festlegen, wie viele aufeinanderfolgende Proxy-Server eine Anfrage passieren darf | Mithilfe von ProxyMaxForwards können Sie festlegen, wie viele aufeinanderfolgende Proxy-Server eine Anfrage passieren darf | ||
* Die Einstellung gilt nur für | |||
Anfragen, die keinen Max-Forwards-Header enthalten, und kann unfreiwillige | Anfragen, die keinen Max-Forwards-Header enthalten, und kann unfreiwillige Proxy-Schleifen verhindern oder DoS-Attacken erschweren | ||
Proxy-Schleifen verhindern oder DoS-Attacken erschweren | * Beispiel | ||
ProxyMaxForwards 8 | ProxyMaxForwards 8 | ||
ProxyPass | ProxyPass Bildet entfernte URLs in den lokalen Verzeichnisbaum ab | ||
Bildet entfernte URLs in den lokalen Verzeichnisbaum ab | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | Syntax 2.0: ProxyPass [Pfad] !|URL ab 2.1: ProxyPass [Pfad] !|URL | ||
Syntax 2.0: ProxyPass [Pfad] !|URL | |||
ab 2.1: ProxyPass [Pfad] !|URL | |||
[Schlüssel=Wert [Schlüssel=Wert ...]] [nocanon] [interpolate] | [Schlüssel=Wert [Schlüssel=Wert ...]] [nocanon] [interpolate] | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Dies ist die Hauptdirektive für die Einrichtung von Reverse-Proxy-Optionen | Dies ist die Hauptdirektive für die Einrichtung von Reverse-Proxy-Optionen | ||
funktioniert formal ähnlich wie Alias (siehe Kapitel 8, »Weiterleitungen und | * Sie funktioniert formal ähnlich wie Alias (siehe Kapitel 8, »Weiterleitungen und Indizes«), nur wird unter dem angegebenen URL-Pfad kein lokales Verzeichnis, sondern eine externe URL eingebunden | ||
Indizes«), nur wird unter dem angegebenen URL-Pfad kein lokales Verzeichnis, sondern eine externe URL eingebunden | * Hier sehen Sie ein Beispiel, das unter dem URL-Pfad /test die Inhalte der Site www.mytest.com veröffentlicht | ||
dem URL-Pfad /test die Inhalte der Site www.mytest.com veröffentlicht | |||
ProxyPass /test http://www.mytest.com | ProxyPass /test http://www.mytest.com | ||
Anstelle einer URL können Sie auch das spezielle Element ! angeben – es bedeutet, dass unter dem angegebenen URL-Pfad keine Proxy-Operation stattfinden | Anstelle einer URL können Sie auch das spezielle Element ! angeben – es bedeutet, dass unter dem angegebenen URL-Pfad keine Proxy-Operation stattfinden soll | ||
* Eine solche Einschränkung muss vor der eigentlichen ProxyPass-Einstellung erfolgen | |||
erfolgen | |||
Das folgende Beispiel bindet unter dem URL-Pfad /othernet die Inhalte von | Das folgende Beispiel bindet unter dem URL-Pfad /othernet die Inhalte von www.othernet.de ein – außer in dem Verzeichnis /othernet/local, das vom lokalen Server verarbeitet wird | ||
www.othernet.de ein – außer in dem Verzeichnis /othernet/local, das vom lokalen Server verarbeitet wird | |||
ProxyPass /othernet/local ! | ProxyPass /othernet/local ! | ||
ProxyPass /othernet http://www.othernet.de | ProxyPass /othernet http://www.othernet.de | ||
Seit Apache 2.1-beta verfügt mod_proxy über Connection-Pooling-Funktionen | Seit Apache 2.1-beta verfügt mod_proxy über Connection-Pooling-Funktionen | ||
Diese und andere Optionen werden in dieser Direktive mithilfe von | Diese und andere Optionen werden in dieser Direktive mithilfe von Schlüssel=Wert-Paaren eingestellt | ||
Schlüssel=Wert-Paaren eingestellt | * Sie alle können auch für die im weiteren Verlauf beschriebene Direktive BalancerMember verwendet werden | ||
sind folgende Schlüssel verfügbar | * Im Einzelnen sind folgende Schlüssel verfügbar | ||
* min – Mindestanzahl von Verbindungen zum Backend-Server | * min – Mindestanzahl von Verbindungen zum Backend-Server | ||
* Der Standardwert ist 0 | |||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
* max – Absolute Höchstanzahl (hard limit) der Verbindungen; kein Standardwert | * max – Absolute Höchstanzahl (hard limit) der Verbindungen; kein Standardwert | ||
* smax – Höchstzahl der Verbindungen, die geöffnet bleiben und keiner maximalen Lebensdauer unterliegen | * smax – Höchstzahl der Verbindungen, die geöffnet bleiben und keiner maximalen Lebensdauer unterliegen | ||
max | * Der Standardwert entspricht dem Wert von max | ||
* ttl – Lebensdauer von Verbindungen, die über die Anzahl smax hinausgehen, in Sekunden | * ttl – Lebensdauer von Verbindungen, die über die Anzahl smax hinausgehen, in Sekunden | ||
* timeout – Maximale Wartezeit auf das Senden von Daten | * Standardmäßig nicht gesetzt | ||
der Wert der Direktive ProxyTimeout verwendet | * timeout – Maximale Wartezeit auf das Senden von Daten | ||
* connectiontimeout – Maximale Wartezeit beim Verbindungsaufbau | * Standardmäßig wird der Wert der Direktive ProxyTimeout verwendet | ||
* connectiontimeout – Maximale Wartezeit beim Verbindungsaufbau | |||
* Der Standardwert entspricht der Einstellung für timeout | |||
* acquire – Maximale Wartezeit auf eine freie Verbindung im Connection-Pool; | * acquire – Maximale Wartezeit auf eine freie Verbindung im Connection-Pool; | ||
standardmäßig nicht gesetzt | standardmäßig nicht gesetzt | ||
* disablereuse – Wenn Sie diesem Parameter den Wert on zuweisen, wird das | * disablereuse – Wenn Sie diesem Parameter den Wert on zuweisen, wird das Connection-Pooling verhindert, und jede Verbindung wird sofort nach Gebrauch wieder geschlossen | ||
Connection-Pooling verhindert, und jede Verbindung wird sofort nach | * Das kann notwendig sein, wenn Firewalls oder Round-Robin-DNS des Ursprungsservers verhindern, dass persistente Reverse-Proxy-Verbindungen funktionieren | ||
Gebrauch wieder geschlossen | * Der Standardwert off erlaubt dagegen das Connection-Pooling | ||
Round-Robin-DNS des Ursprungsservers verhindern, dass persistente | * flushpackets – Diese Option ist zurzeit nur für AJP implementiert | ||
Reverse-Proxy-Verbindungen funktionieren | * Sie bestimmt, ob Ausgabedaten des Servers gepuffert oder sofort gesendet werden | ||
dagegen das Connection-Pooling | * Der Standardwert off besagt, dass die Daten standardmäßig gepuffert und nur im Bedarfsfall gesendet werden | ||
* flushpackets – Diese Option ist zurzeit nur für AJP implementiert | * on sendet sie stets sofort | ||
bestimmt, ob Ausgabedaten des Servers gepuffert oder sofort gesendet werden | * Der dritte mögliche Wert, auto, sendet die Daten, wenn für eine bestimmte Anzahl von Millisekunden (durch flushwait festgelegt) keine Eingabe empfangen wurde | ||
und nur im Bedarfsfall gesendet werden | * flushwait – Die Anzahl von Millisekunden, die flushpackets im auto-Modus warten soll, bis die gepufferten Daten gesendet werden | ||
mögliche Wert, auto, sendet die Daten, wenn für eine bestimmte Anzahl von | * Der Standardwert ist 10 | ||
Millisekunden (durch flushwait festgelegt) keine Eingabe empfangen wurde | |||
* flushwait – Die Anzahl von Millisekunden, die flushpackets im auto-Modus | |||
warten soll, bis die gepufferten Daten gesendet werden | |||
* keepalive – Wenn Sie den Wert on setzen, sendet Apache regelmäßig KEEP_ | * keepalive – Wenn Sie den Wert on setzen, sendet Apache regelmäßig KEEP_ | ||
ALIVE-Pakete | ALIVE-Pakete | ||
* Wichtig bei Firewalls, die inaktive Verbindungen zu schnell unterbrechen | |||
* retry – Wartezeit bis zu einem neuen Verbindungsversuch, falls eine Verbindung im Pool einen Fehler gemeldet hat | * Der Standardwert ist off | ||
* lbset – Mit dieser Option können Sie einem BalancerMember-Worker eine | * retry – Wartezeit bis zu einem neuen Verbindungsversuch, falls eine Verbindung im Pool einen Fehler gemeldet hat | ||
Ordnungszahl zuweisen | * Der Standardwert beträgt 60 Sekunden | ||
der niedrigsten Ordnungszahl durch, bevor er solche mit höheren Ordnungszahlen verwendet | * lbset – Mit dieser Option können Sie einem BalancerMember-Worker eine Ordnungszahl zuweisen | ||
* Der Load-Balancer probiert zunächst die Worker mit der niedrigsten Ordnungszahl durch, bevor er solche mit höheren Ordnungszahlen verwendet | |||
* Auf diese Weise können Sie Fallback-Load-Balancing-Cluster errichten, die aktiv werden, wenn das Hauptcluster ausfällt oder überlastet ist | |||
* Der Standardwert ist 0 | |||
* ping – Nur für AJP | * ping – Nur für AJP | ||
namens CPING, auf die eine CPONG-Antwort erwartet wird, vergleichbar mit | * Das AJP13-Protokoll unterstützt eine spezielle Anfrage namens CPING, auf die eine CPONG-Antwort erwartet wird, vergleichbar mit dem gewöhnlichen ICMP-ping | ||
dem gewöhnlichen ICMP-ping | * Der Standardwert 0 deaktiviert dieses Feature; | ||
bei einem höheren Wert sendet der Proxy CPING-Anfragen und wartet die | bei einem höheren Wert sendet der Proxy CPING-Anfragen und wartet die angegebene Anzahl von Sekunden auf die CPONG-Antwort; er verwendet den betreffenden Server nur dann für die eigentliche Anfrage, wenn das CPONG rechtzeitig eintrifft | ||
angegebene Anzahl von Sekunden auf die CPONG-Antwort; er verwendet den | * Dieses Verfahren erhöht leicht den Netzwerk-Traffic, verhindert dafür aber das fruchtlose Versenden vollständiger Anfragen | ||
betreffenden Server nur dann für die eigentliche Anfrage, wenn das CPONG | * Benötigt als Server eine Tomcat-Version ab 3.3.2, 4.1.28, 5.0.13, 5.5.0 oder 6.0 | ||
rechtzeitig eintrifft | * loadfactor – Bestimmt auf einer Prozentskala von 1 bis 100, wie stark der einzelne Rechner als Teil eines Load-Balancing-Clusters belastet wird | ||
als Server eine Tomcat-Version ab 3.3.2, 4.1.28, 5.0.13, 5.5.0 oder 6.0 | * Standardwert: 1 | ||
* loadfactor – Bestimmt auf einer Prozentskala von 1 bis 100, wie stark der einzelne Rechner als Teil eines Load-Balancing-Clusters belastet wird | * route – Route eines Einzelrechners beim Load-Balancing, normalerweise nicht gesetzt | ||
* route – Route eines Einzelrechners beim Load-Balancing, normalerweise nicht | * Dieser Wert wird an eine eventuelle Session-ID angehängt | ||
* redirect – Umleitungsroute | |||
* redirect – Umleitungsroute | * Anfragen ohne Session-ID werden an den Rechner im Load-Balancing-Cluster weitergeleitet, dessen route-Wert dieser Angabe entspricht | ||
Angabe entspricht | * status – Status, den ein Worker beim Start besitzen soll | ||
* status – Status, den ein Worker beim Start besitzen soll | * Standardmäßig besitzt ein Worker zunächst keinen besonderen Status | ||
besitzt ein Worker zunächst keinen besonderen Status | * Die möglichen Werte sind die folgenden einzelnen Buchstaben | ||
sind die folgenden einzelnen Buchstaben | |||
* D – deaktiviert (disabled) | * D – deaktiviert (disabled) | ||
* S – angehalten (stopped) | * S – angehalten (stopped) | ||
| Zeile 396: | Zeile 339: | ||
* E – Fehlerzustand (error) | * E – Fehlerzustand (error) | ||
Sie können mehrere Statusbuchstaben verwenden und ihnen optional ein + | Sie können mehrere Statusbuchstaben verwenden und ihnen optional ein + | ||
voranstellen, um sie hinzuzufügen (Standard), oder ein -, um sie zu entfernen | voranstellen, um sie hinzuzufügen (Standard), oder ein -, um sie zu entfernen | ||
Bei der Weiterleitung an eine virtuelle balancer://-URL können Sie noch die folgenden speziellen Parameter angeben | Bei der Weiterleitung an eine virtuelle balancer://-URL können Sie noch die folgenden speziellen Parameter angeben | ||
* lbmethod – Legt die Load-Balancing-Methode fest: byrequests (Standard) verteilt die Last nach der Anzahl der Anfragen, während bytraffic die tatsächlich | * lbmethod – Legt die Load-Balancing-Methode fest: byrequests (Standard) verteilt die Last nach der Anzahl der Anfragen, während bytraffic die tatsächlich übertragenen Bytes in Betracht zieht | ||
übertragenen Bytes in Betracht zieht | In Apache 2.3 wurden diese Funktionalitäten ausgelagert, die keine eigenen Direktiven bereitstellen, aber geladen sein müssen, um die jeweilige lbmethod-Einstellung verwenden zu können | ||
In Apache 2.3 wurden diese Funktionalitäten ausgelagert, die keine eigenen | * Gleichzeitig wurden neue Methoden hinzugefügt | ||
Direktiven bereitstellen, aber geladen sein müssen, um die jeweilige | |||
lbmethod-Einstellung verwenden zu können | |||
Methoden hinzugefügt | |||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
* mod_lbmethod_bybusiness (Methodenname bybusiness) merkt sich, wie | * mod_lbmethod_bybusiness (Methodenname bybusiness) merkt sich, wie viele wartende Anfragen jedem Worker gerade zugewiesen sind, und weist eine neue Anfrage demjenigen mit der geringsten Anzahl zu | ||
viele wartende Anfragen jedem Worker gerade zugewiesen sind, und weist | * Dies ist besonders sinnvoll, wenn die Worker eigene Warteschlangen für Anfragen besitzen | ||
eine neue Anfrage demjenigen mit der geringsten Anzahl zu | * mod_lbmethod_byrequests stellt die bereits genannte Methode bybusiness zur Verfügung | ||
* mod_lbmethod_byrequests stellt die bereits genannte Methode bybusiness | * mod_lbmethod_bytraffic stellt die ebenfalls schon genannte Methode bytraffic bereit | ||
zur Verfügung | |||
* mod_lbmethod_bytraffic stellt die ebenfalls schon genannte Methode | |||
bytraffic bereit | |||
* mod_lbmethod_heartbeat (Methodenname heartbeat) orientiert sich an | * mod_lbmethod_heartbeat (Methodenname heartbeat) orientiert sich an | ||
»Lebenszeichen«-Anfragen (Heartbeats) der Worker, die innerhalb von | »Lebenszeichen«-Anfragen (Heartbeats) der Worker, die innerhalb von Apache beispielsweise durch das ebenfalls neue Modul mod_heartbeat erzeugt werden können | ||
Apache beispielsweise durch das ebenfalls neue Modul mod_heartbeat | * stickysession – Hier wird ein Wert wie JSESSIONID oder PHPSESSIONID eingetragen, damit eine bestimmte Session durchgehend von ein und demselben Einzelrechner des Clusters verarbeitet wird | ||
erzeugt werden können | * nofailover – Wenn Sie diese Option auf on setzen, wird eine Session abgebrochen, sobald der entsprechende Einzel-Server nicht mehr verfügbar ist oder einen Fehler meldet | ||
* stickysession – Hier wird ein Wert wie JSESSIONID oder PHPSESSIONID eingetragen, damit eine bestimmte Session durchgehend von ein und demselben | * Auch dies ist wichtig, wenn Ihre Anwendungen keinen Wechsel einer Session auf einen anderen Server vertragen | ||
Einzelrechner des Clusters verarbeitet wird | * timeout – Wartezeit, bis ein Rechner des Balancing-Clusters verfügbar ist | ||
* nofailover – Wenn Sie diese Option auf on setzen, wird eine Session abgebrochen, sobald der entsprechende Einzel-Server nicht mehr verfügbar ist oder | * Der Standardwert ist 0, das heißt, es wird normalerweise nicht gewartet | ||
einen Fehler meldet | * maxattempts – Die maximale Anzahl möglicher Fehlversuche, bevor der Verbindungsversuch aufgegeben wird | ||
Wechsel einer Session auf einen anderen Server vertragen | * Der Standardwert ist 1 | ||
* timeout – Wartezeit, bis ein Rechner des Balancing-Clusters verfügbar ist | * scolonpathdelim – Wird diese Option auf on gesetzt, dann gilt das Semikolon als Trennzeichen in Session-IDs | ||
Standardwert ist 0, das heißt, es wird normalerweise nicht gewartet | * Dies emuliert das Verhalten von mod_jk (siehe Kapitel 15, »Technologien zur Webprogrammierung«) im Umgang mit zusammengesetzten Session-Parametern wie JSESSIONID=3a4c9fa0d;foo= bar | ||
* maxattempts – Die maximale Anzahl möglicher Fehlversuche, bevor der Verbindungsversuch aufgegeben wird | |||
* scolonpathdelim – Wird diese Option auf on gesetzt, dann gilt das Semikolon | |||
als Trennzeichen in Session-IDs | |||
Kapitel 15, »Technologien zur Webprogrammierung«) im Umgang mit zusammengesetzten Session-Parametern wie JSESSIONID=3a4c9fa0d;foo= bar | |||
Hinter den Schlüssel=Wert-Paaren können Sie optional noch die folgenden beiden Schlüsselwörter ohne Werte setzen | Hinter den Schlüssel=Wert-Paaren können Sie optional noch die folgenden beiden Schlüsselwörter ohne Werte setzen | ||
* nocanon – Normalerweise wird die URL der Anfrage kanonisiert, bevor die | * nocanon – Normalerweise wird die URL der Anfrage kanonisiert, bevor die Proxy-Anfrage weitergeleitet wird; konkret wird der kanonische Server-Name verwendet (siehe UseCanonicalName in Kapitel 6, »Grundkonfiguration«) und Path-Info (Pfadangaben hinter der eigentlichen URL) entfernt | ||
Proxy-Anfrage weitergeleitet wird; konkret wird der kanonische Server-Name | * Diese Option sorgt dafür, dass die ungeparste URL übergeben wird; in einigen Fällen kann dies notwendig sein | ||
verwendet (siehe UseCanonicalName in Kapitel 6, »Grundkonfiguration«) und | * interpolate – Sorgt in Zusammenarbeit mit der weiter unten beschriebenen Direktive ProxyPassInterpolateEnv dafür, dass Umgebungsvariablen in der Form ${Variablenname} in der URL für die Proxy-Anfrage interpoliert werden | ||
Path-Info (Pfadangaben hinter der eigentlichen URL) entfernt | |||
sorgt dafür, dass die ungeparste URL übergeben wird; in einigen Fällen kann | |||
dies notwendig sein | |||
* interpolate – Sorgt in Zusammenarbeit mit der weiter unten beschriebenen | |||
Direktive ProxyPassInterpolateEnv dafür, dass Umgebungsvariablen in der | |||
Form ${Variablenname} in der URL für die Proxy-Anfrage interpoliert werden | |||
Beachten Sie, dass in diesem Kontext nicht alle CGI-Umgebungsvariablen | Beachten Sie, dass in diesem Kontext nicht alle CGI-Umgebungsvariablen | ||
(siehe Kapitel 14, »CGI«) zur Verfügung stehen, sodass Sie einige Ersetzungen | (siehe Kapitel 14, »CGI«) zur Verfügung stehen, sodass Sie einige Ersetzungen mittels mod_rewrite vornehmen müssen | ||
mittels mod_rewrite vornehmen müssen | * Diese Option ist seit Apache 2.2.9 | ||
verfügbar | verfügbar | ||
ProxySet | ProxySet Optionen für Balancer und BalancerMember setzen | ||
Optionen für Balancer und BalancerMember setzen | |||
Seit Version 2.2 | Seit Version 2.2 | ||
Modul mod_proxy | Modul mod_proxy Kontext <Directory>, <Location>, <Files> | ||
Kontext <Directory>, <Location>, <Files> | |||
Syntax ProxySet URL Schlüssel=Wert | Syntax ProxySet URL Schlüssel=Wert | ||
[Schlüssel=Wert ...] | [Schlüssel=Wert ...] | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
ProxySet ist eine alternative Methode, sämtliche unter ProxyPass vorgestellten | ProxySet ist eine alternative Methode, sämtliche unter ProxyPass vorgestellten Schlüssel=Wert-Optionen für Load-Balancer und BalancerMember zu setzen | ||
Schlüssel=Wert-Optionen für Load-Balancer und BalancerMember zu setzen | Wenn Sie die Direktive innerhalb eines <Proxy>-Containers einsetzen, können Sie den ersten Parameter (URL) weglassen, da die URL bereits für den Container gesetzt wird | ||
Wenn Sie die Direktive innerhalb eines <Proxy>-Containers einsetzen, können | * Beispiele | ||
Sie den ersten Parameter (URL) weglassen, da die URL bereits für den Container | |||
gesetzt wird | |||
ProxySet balancer://cluster lbmethod=bytraffic | ProxySet balancer://cluster lbmethod=bytraffic | ||
<Proxy balancer://cluster> | <Proxy balancer://cluster> | ||
BalancerMember www1.mynet.de | BalancerMember www1.mynet.de BalancerMember www2.mynet.de BalancerMember www3.mynet.de ProxySet keepalive=On | ||
BalancerMember www2.mynet.de | |||
BalancerMember www3.mynet.de | |||
ProxySet keepalive=On | |||
</Proxy> | </Proxy> | ||
ProxyPass /balanced balancer://cluster | ProxyPass /balanced balancer://cluster | ||
ProxyPassMatch | ProxyPassMatch Bildet entfernte URLs mithilfe regulärer Ausdrücke in den lokalen Verzeichnisbaum ab | ||
Bildet entfernte URLs mithilfe regulärer Ausdrücke in den lokalen Verzeichnisbaum ab | |||
Seit Version 2.2.5 | Seit Version 2.2.5 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | |||
Syntax ProxyPassMatch [Regexp] !|URL | Syntax ProxyPassMatch [Regexp] !|URL | ||
[Schlüssel=Wert [Schlüssel=Wert ...]] | [Schlüssel=Wert [Schlüssel=Wert ...]] | ||
| Zeile 487: | Zeile 405: | ||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
Diese Direktive funktioniert genau wie ProxyPass, mit der Ausnahme, dass | Diese Direktive funktioniert genau wie ProxyPass, mit der Ausnahme, dass anstelle des zu ersetzenden Pfads ein regulärer Ausdruck angegeben werden kann, was die Konfiguration flexibler macht | ||
anstelle des zu ersetzenden Pfads ein regulärer Ausdruck angegeben werden | * In der Proxy-Anfrage-URL können geklammerte Teilausdrücke aus dem regulären Ausdruck dann wie üblich als $1, $2 usw | ||
kann, was die Konfiguration flexibler macht | * eingesetzt werden | ||
geklammerte Teilausdrücke aus dem regulären Ausdruck dann wie üblich als $1, $2 usw | |||
Das folgende Beispiel bindet gängige Mediendateien unter dem URL-Pfad /media | Das folgende Beispiel bindet gängige Mediendateien unter dem URL-Pfad /media per Reverse-Proxy-Anfrage an media.mynet.de ein | ||
per Reverse-Proxy-Anfrage an media.mynet.de ein | |||
ProxyPassMatch ^/media/(.*)\.(gif|jpg|png|swf|avi) \ | ProxyPassMatch ^/media/(.*)\.(gif|jpg|png|swf|avi) \ | ||
http://media.mynet.de/$1.$2 | http://media.mynet.de/$1.$2 | ||
ProxyPassInterpolateEnv | ProxyPassInterpolateEnv Interpoliert Umgebungsvariablen in Proxy-Anfrage-URLs | ||
Interpoliert Umgebungsvariablen in Proxy-Anfrage-URLs | |||
Seit Version 2.2.9 | Seit Version 2.2.9 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | Syntax ProxyPassInterpolateEnv On|Off Standardwert Off | ||
Syntax ProxyPassInterpolateEnv On|Off | |||
Standardwert Off | |||
Wenn Sie dieser Direktive den Wert On zuweisen, wird die Interpolation von Umgebungsvariablen in ProxyPass, ProxyPassReverse, ProxyPassReverseCookieDomain | Wenn Sie dieser Direktive den Wert On zuweisen, wird die Interpolation von Umgebungsvariablen in ProxyPass, ProxyPassReverse, ProxyPassReverseCookieDomain und ProxyPassReverseCookiePath grundsätzlich aktiviert | ||
und ProxyPassReverseCookiePath grundsätzlich aktiviert | * Zusätzlich muss in der entsprechenden Direktive selbst noch das Schlüsselwort interpolate gesetzt werden (siehe Beschreibung der jeweiligen Direktive) | ||
entsprechenden Direktive selbst noch das Schlüsselwort interpolate gesetzt werden (siehe Beschreibung der jeweiligen Direktive) | * Danach können Sie einige Umgebungsvariablen in der Form ${Variablenname} in den Proxy-Anfrage-URLs verwenden | ||
Direktive nur dann aktivieren, wenn es wirklich notwendig ist | * Da dieses Feature zulasten der Server-Performance geht, sollten Sie diese Direktive nur dann aktivieren, wenn es wirklich notwendig ist | ||
ProxyPassReverse | ProxyPassReverse URL im HTTP-Antwort-Header eines Reverse-Proxys anpassen | ||
URL im HTTP-Antwort-Header eines Reverse-Proxys anpassen | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | ||
Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> | |||
Syntax ProxyPassReverse [Pfad] URL [interpolate] | Syntax ProxyPassReverse [Pfad] URL [interpolate] | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Diese Direktive arbeitet mit ProxyPass zusammen; häufig werden sogar für beide | Diese Direktive arbeitet mit ProxyPass zusammen; häufig werden sogar für beide Direktiven dieselben Argumente angegeben | ||
Direktiven dieselben Argumente angegeben | * ProxyPassReverse sorgt dafür, dass die URL in bestimmten HTTP-Antwort-Headern von Weiterleitungen (3xx-Status | ||
die URL in bestimmten HTTP-Antwort-Headern von Weiterleitungen (3xx-Status | |||
codes) angepasst wird | codes) angepasst wird | ||
* Namentlich geht es um die Header Location, ContentLocation und URI | |||
* Betrachten Sie dazu folgendes Beispiel | |||
ProxyPass /othernet http://www.othernet.de | ProxyPass /othernet http://www.othernet.de ProxyPassReverse /othernet http://www.othernet.de | ||
ProxyPassReverse /othernet http://www.othernet.de | |||
Angenommen, ein Client fordert die URL www.mynet.de/othernet/test an | Angenommen, ein Client fordert die URL www.mynet.de/othernet/test an | ||
entspricht aufgrund der ProxyPass-Direktive in Wirklichkeit der Adresse | * Dies entspricht aufgrund der ProxyPass-Direktive in Wirklichkeit der Adresse www.othernet.de/test | ||
www.othernet.de/test | * Wenn /test ein Verzeichnis auf dem entsprechenden Server ist, können Sie davon ausgehen, dass die Antwort eine Weiterleitung auf www.othernet.de/test/ ist (das Problem mit dem abschließenden Slash wird in Kapitel 6, »Grundkonfiguration«, genau erläutert) | ||
www.othernet.de/test/ ist (das Problem mit dem abschließenden Slash wird in | * Die relevanten Elemente der HTTP-Antwort des Servers www.othernet.de sehen mit anderen Worten folgendermaßen aus | ||
Kapitel 6, »Grundkonfiguration«, genau erläutert) | |||
HTTP-Antwort des Servers www.othernet.de sehen mit anderen Worten folgendermaßen aus | |||
HTTP/1.1 301 Moved Permanently | HTTP/1.1 301 Moved Permanently Location: http://www.othernet.de/test/ | ||
Location: http://www.othernet.de/test/ | |||
An dieser Stelle sorgt ProxyPassReverse dafür, dass die URL wieder in das URLSchema des Proxys umgewandelt wird | An dieser Stelle sorgt ProxyPassReverse dafür, dass die URL wieder in das URLSchema des Proxys umgewandelt wird | ||
Gesicht bekommt, sieht also folgendermaßen aus | * Der Location-Header, den der Client zu Gesicht bekommt, sieht also folgendermaßen aus | ||
Location: http://www.mynet.de/othernet/test/ | Location: http://www.mynet.de/othernet/test/ | ||
Der Hostname in den geänderten Headern wird übrigens nicht unbedingt aus der | Der Hostname in den geänderten Headern wird übrigens nicht unbedingt aus der ursprünglichen Anfrage übernommen, sondern gemäß der UseCanonicalNameEinstellung gesetzt | ||
ursprünglichen Anfrage übernommen, sondern gemäß der UseCanonicalNameEinstellung gesetzt | |||
Auch für diese Direktive können Sie die bei ProxyPass erläuterte Option | Auch für diese Direktive können Sie die bei ProxyPass erläuterte Option interpolate setzen, um Umgebungsvariablen mittels ${Variablenname} zu interpolieren; dazu muss wiederum die Direktive ProxyPassInterpolateEnv eingeschaltet sein | ||
interpolate setzen, um Umgebungsvariablen mittels ${Variablenname} zu interpolieren; dazu muss wiederum die Direktive ProxyPassInterpolateEnv eingeschaltet sein | |||
ProxyPassReverseCookieDomain | ProxyPassReverseCookieDomain Domain in Cookies anpassen, die über den Reverse-Proxy übertragen werden | ||
Domain in Cookies anpassen, die über den Reverse-Proxy übertragen werden | |||
Seit Version 2.1-beta | Seit Version 2.1-beta Modul mod_proxy Kontext Server, <VirtualHost> | ||
Modul mod_proxy | Syntax ProxyPassReverseCookieDomain interne-Domain externe-Domain [interpolate] | ||
Kontext Server, <VirtualHost> | |||
Syntax ProxyPassReverseCookieDomain | |||
interne-Domain externe-Domain [interpolate] | |||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Auf ähnliche Weise und aus demselben Grund wie ProxyPassReverse ändert | Auf ähnliche Weise und aus demselben Grund wie ProxyPassReverse ändert diese Direktive den Domain-Bestandteil in SetCookie-Headern | ||
diese Direktive den Domain-Bestandteil in SetCookie-Headern | * Beispiel | ||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
| Zeile 567: | Zeile 469: | ||
ProxyPassReverseCookieDomain mynet.de othernet.de | ProxyPassReverseCookieDomain mynet.de othernet.de | ||
Näheres über Cookies und ihre Bestandteile erfahren Sie im PHP-Abschnitt von | Näheres über Cookies und ihre Bestandteile erfahren Sie im PHP-Abschnitt von Kapitel 15, »Technologien zur Webprogrammierung« | ||
Kapitel 15, »Technologien zur Webprogrammierung« | |||
ProxyPassReverseCookiePath | ProxyPassReverseCookiePath Pfad in Cookies anpassen, die über den Reverse-Proxy übertragen werden | ||
Pfad in Cookies anpassen, die über den Reverse-Proxy übertragen werden | |||
Seit Version 2.1-beta | Seit Version 2.1-beta Modul mod_proxy Kontext Server, <VirtualHost> | ||
Modul mod_proxy | Syntax ProxyPassReverseCookiePath interner-Pfad externer-Pfad [interpolate] | ||
Kontext Server, <VirtualHost> | |||
Syntax ProxyPassReverseCookiePath | |||
interner-Pfad externer-Pfad [interpolate] | |||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Diese Direktive ändert entsprechend den Pfadbestandteil eines SetCookie-Headers | Diese Direktive ändert entsprechend den Pfadbestandteil eines SetCookie-Headers | ||
BalancerMember | BalancerMember Definition eines Einzel-Servers in einem Load-Balancing-Cluster | ||
Definition eines Einzel-Servers in einem Load-Balancing-Cluster | |||
Seit Version 2.1-beta | Seit Version 2.1-beta Modul mod_proxy Kontext Server, <VirtualHost> | ||
Modul mod_proxy | |||
Kontext Server, <VirtualHost> | |||
Syntax BalancerMember Host | Syntax BalancerMember Host | ||
[Schlüssel=Wert [Schlüssel=Wert ...]] | [Schlüssel=Wert [Schlüssel=Wert ...]] | ||
Standardwert nicht gesetzt | Standardwert nicht gesetzt | ||
Mithilfe dieser Direktive legen Sie die einzelnen Hosts eines Load-Balancing-Clusters fest | Mithilfe dieser Direktive legen Sie die einzelnen Hosts eines Load-Balancing-Clusters fest | ||
* Dies muss innerhalb eines <Proxy>-Containers mit einer balancer://Alias-URL geschehen | |||
* Diese URL können Sie anschließend für ProxyPass-Direktiven verwenden, um die Last auf die verschiedenen BalancerMember zu verteilen | |||
Das folgende Beispiel definiert drei HTTP-Server als Load-Balancing-Cluster und | Das folgende Beispiel definiert drei HTTP-Server als Load-Balancing-Cluster und bindet dieses Cluster anschließend unter dem URL-Pfad /balanced ein | ||
bindet dieses Cluster anschließend unter dem URL-Pfad /balanced ein | |||
<Proxy balancer://cluster> | <Proxy balancer://cluster> | ||
BalancerMember www1.mynet.de | BalancerMember www1.mynet.de BalancerMember www2.mynet.de BalancerMember www3.mynet.de | ||
BalancerMember www2.mynet.de | |||
BalancerMember www3.mynet.de | |||
</Proxy> | </Proxy> | ||
ProxyPass /balanced balancer://cluster | ProxyPass /balanced balancer://cluster | ||
Optional können Sie für jeden BalancerMember eine Reihe von Optionen im Format Schlüssel=Wert angeben | Optional können Sie für jeden BalancerMember eine Reihe von Optionen im Format Schlüssel=Wert angeben | ||
Direktive ProxyPass erläutert | * Die möglichen Schlüssel wurden bereits bei der Direktive ProxyPass erläutert | ||
BalancerGrowth | BalancerGrowth Nachträgliches Wachstumspotenzial für die Anzahl der BalancerMember | ||
Nachträgliches Wachstumspotenzial für die Anzahl der BalancerMember | |||
Seit Version 2.3.13 | Seit Version 2.3.13 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax BalancerGrowth Anzahl Standardwert 5 | ||
Syntax BalancerGrowth Anzahl | |||
Standardwert 5 | |||
Diese Direktive legt fest, wie viele BalancerMember für einen virtuellen Host | Diese Direktive legt fest, wie viele BalancerMember für einen virtuellen Host über die vorkonfigurierte Anzahl hinaus hinzugefügt werden können | ||
über die vorkonfigurierte Anzahl hinaus hinzugefügt werden können | |||
ProxyPreserveHost | ProxyPreserveHost Host-Header der Anfrage an Reverse-Proxy durchreichen | ||
Host-Header der Anfrage an Reverse-Proxy durchreichen | |||
Seit Version 2.0.31 | Seit Version 2.0.31 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyPreserveHost On|Off Standardwert Off | ||
Syntax ProxyPreserveHost On|Off | |||
Standardwert Off | |||
Wenn Sie diese Direktive aktivieren, wird bei Reverse-Proxy-Anfragen der HostHeader aus der Client-Anfrage an den entfernten Server durchgereicht | Wenn Sie diese Direktive aktivieren, wird bei Reverse-Proxy-Anfragen der HostHeader aus der Client-Anfrage an den entfernten Server durchgereicht | ||
meisten Fällen ist dies nicht sinnvoll; nur im Zusammenhang mit speziellen Konfigurationen für namensbasierte virtuelle Hosts kann es manchmal erforderlich | * In den meisten Fällen ist dies nicht sinnvoll; nur im Zusammenhang mit speziellen Konfigurationen für namensbasierte virtuelle Hosts kann es manchmal erforderlich sein, den ursprünglichen Host-Header weiterzuleiten | ||
sein, den ursprünglichen Host-Header weiterzuleiten | |||
ProxyReceiveBufferSize | ProxyReceiveBufferSize Netzwerkpuffergröße für Proxy-Verbindungen | ||
Netzwerkpuffergröße für Proxy-Verbindungen | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyReceiveBufferSize Bytes Standardwert 0 | ||
Syntax ProxyReceiveBufferSize Bytes | |||
Standardwert 0 | |||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
Diese Direktive ermöglicht die Festlegung des TCP-Puffers für Proxy-Verbindungen | Diese Direktive ermöglicht die Festlegung des TCP-Puffers für Proxy-Verbindungen | ||
512 sein | * Normalerweise bestimmt der Vorgabewert 0, dass die Vorgabe des jeweiligen Betriebssystems verwendet werden soll | ||
* Wenn Sie den Puffer manuell vergrößern möchten, um den Datendurchsatz zu steigern, muss der Wert größer als | |||
512 sein | |||
* Beispiel | |||
ProxyReceiveBufferSize 1024 | ProxyReceiveBufferSize 1024 | ||
ProxyTimeout | ProxyTimeout Timeout für Proxy-Anfragen | ||
Timeout für Proxy-Anfragen | |||
Seit Version 2.0.31 | Seit Version 2.0.31 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyTimeout Sekunden Standardwert 300 | ||
Syntax ProxyTimeout Sekunden | |||
Standardwert 300 | |||
Mit dieser Direktive können Sie festlegen, wie lange der Proxy auf die Antwort | Mit dieser Direktive können Sie festlegen, wie lange der Proxy auf die Antwort eines entfernten Servers warten soll, bevor er die Anfrage als gescheitert betrachtet | ||
eines entfernten Servers warten soll, bevor er die Anfrage als gescheitert betrachtet | * Die Voreinstellung von 300 Sekunden (5 Minuten) ist bei Weitem ausreichend | ||
ProxyVia | ProxyVia Konfiguration des Via-Headers für Proxy-Antworten | ||
Konfiguration des Via-Headers für Proxy-Antworten | |||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyVia On|Off|Full|Block Standardwert Off | ||
Syntax ProxyVia On|Off|Full|Block | |||
Standardwert Off | |||
Diese Direktive bestimmt, wie der Proxy mit dem Via-Header in HTTP-Anfragen | Diese Direktive bestimmt, wie der Proxy mit dem Via-Header in HTTP-Anfragen und -Antworten umgehen soll | ||
und -Antworten umgehen soll | * Dieser Header wird in Kapitel 2, »Funktionsweise von Webservern«, näher erläutert | ||
von Webservern«, näher erläutert | * Er sollte eine Liste sämtlicher Proxys enthalten, über die die Anfrage weitergeleitet wurde | ||
* Sie können einen der vier folgenden Werte angeben | |||
* On | * On | ||
Antwort hinzu | * Der Proxy fügt den eigenen Hostnamen zum Via-Header jeder Anfrage und Antwort hinzu | ||
* Off | * Off | ||
Apache fügt keinen eigenen Eintrag hinzu | * Eventuell vorhandene Via-Header werden unbehelligt weitergeleitet; | ||
Apache fügt keinen eigenen Eintrag hinzu | |||
* Full | * Full | ||
* Block | * Apache erzeugt Via-Header wie bei der Einstellung On und fügt zusätzlich seine Versionsinformationen als Via-Kommentar hinzu | ||
alle bereits vorhandenen Via-Header | * Block | ||
* Der Proxy fügt keinen Via-Eintrag hinzu und entfernt darüber hinaus alle bereits vorhandenen Via-Header | |||
AllowCONNECT | AllowCONNECT Legt fest, über welche TCP-Ports CONNECT-Anfragen erlaubt sind | ||
Legt fest, über welche TCP-Ports CONNECT-Anfragen erlaubt sind | |||
Modul mod_proxy_connect; vor 2.3.5 mod_proxy | Modul mod_proxy_connect; vor 2.3.5 mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | |||
Syntax AllowCONNECT Port [Port ...] | Syntax AllowCONNECT Port [Port ...] | ||
seit 2.3.7 | seit 2.3.7 | ||
AllowCONNECT Port[-Port] [Port[-Port] ...] | AllowCONNECT Port[-Port] [Port[-Port] ...] | ||
Standardwert 443 563 | Standardwert 443 563 | ||
Diese Direktive bestimmt das Verhalten der SSL-Tunnelung über mod_proxy_ | Diese Direktive bestimmt das Verhalten der SSL-Tunnelung über mod_proxy_ | ||
connect: Sie bestimmt, für welche Server-TCP-Ports CONNECT-Anfragen weitergeleitet werden | connect: Sie bestimmt, für welche Server-TCP-Ports CONNECT-Anfragen weitergeleitet werden | ||
aktiviert | * Standardmäßig sind nur die Ports 443 (HTTPS) und 563 (snews) | ||
Sie Ihren SSL-Server nicht für Port 443 konfiguriert haben –, können Sie sie durch | aktiviert | ||
Leerzeichen getrennt angeben | * Wenn Sie in Ausnahmefällen noch andere Ports benötigen – etwa weil Sie Ihren SSL-Server nicht für Port 443 konfiguriert haben –, können Sie sie durch Leerzeichen getrennt angeben | ||
* Beispiel | |||
AllowCONNECT 443 563 4433 | AllowCONNECT 443 563 4433 | ||
Seit Version 2.3.7 können anstelle einzelner Ports auch Port-Bereiche in der | Seit Version 2.3.7 können anstelle einzelner Ports auch Port-Bereiche in der Schreibweise Startportnummer-Endportnummer angegeben werden | ||
Schreibweise Startportnummer-Endportnummer angegeben werden | * Beispiel | ||
AllowCONNECT 443 563 4433-4439 | AllowCONNECT 443 563 4433-4439 | ||
ProxyStatus | ProxyStatus Bestimmt, ob mod_status Informationen über den Load-Balancer-Status veröffentlichen soll | ||
Bestimmt, ob mod_status Informationen über den Load-Balancer-Status veröffentlichen soll | |||
Seit Version 2.2 | Seit Version 2.2 | ||
Modul mod_proxy | Modul mod_proxy Kontext Server, <VirtualHost> | ||
Kontext Server, <VirtualHost> | Syntax ProxyStatus On|Off|Full Standardwert Off | ||
Syntax ProxyStatus On|Off|Full | |||
Standardwert Off | |||
ProxyStatus bestimmt, ob das in Kapitel 8, »Weiterleitungen und Indizes«, vorgestellte Modul mod_status Informationen über den Status des Proxy-Load-Balan | ProxyStatus bestimmt, ob das in Kapitel 8, »Weiterleitungen und Indizes«, vorgestellte Modul mod_status Informationen über den Status des Proxy-Load-Balan | ||
| Zeile 716: | Zeile 594: | ||
Apache als Proxy-Server 13.1 | Apache als Proxy-Server 13.1 | ||
cings veröffentlicht | cings veröffentlicht | ||
* Wenn Sie die Direktive auf On oder Full (Synonym) setzen, werden diese Informationen ausgegeben, bei der Standardeinstellung Off nicht | |||
Version vom 4. März 2025, 10:51 Uhr
Proxy-Direktiven
Im Folgenden werden sämtliche Direktiven des Moduls mod_proxy vorgestellt Bitte beachten Sie, dass einige neuere Funktionen, insbesondere im Zusammenhang mit dem Proxy-Load-Balancing, offiziell undokumentiert sind und zudem noch weiterentwickelt werden. Über gravierende Neuerungen werden Sie jeweils auf der Website zum Buch informiert
<Proxy> ... </Proxy> Einstellungen für Proxy-Ressourcen
Modul mod_proxy Kontext Server, <VirtualHost> Syntax <Proxy URL-Muster> ... </Proxy> Standardwert nicht gesetzt
Direktiven, die in diesem Container stehen, gelten ausschließlich für ProxyAnfragen, die die angegebene URL anfordern
- Sie können Shell-Wildcards verwenden, um mehrere URLs durch ein Muster zu beschreiben; für echte reguläre Ausdrücke ist dagegen die Variante <ProxyMatch> zuständig
- In vielen Fällen wird einfach * verwendet, um Regeln für sämtliche Proxy-Anfragen zu bilden
Das folgende Beispiel wurde bereits im Zusammenhang gezeigt; es erlaubt nur Rechnern aus dem lokalen Netzwerk Proxy-Anfragen
<Proxy *> Order deny,allow Deny from all Allow from 192.168.0 </Proxy>
Das nächste Beispiel verhindert, dass irgendjemand über den Forward-Proxy auf die Site http://www.trojan-horse.com zugreift
<Proxy http://www.trojan-horse.com/*> Order deny,allow Deny from all </Proxy>
Ein spezieller Verwendungszweck dieses Containers ergibt sich im Zusammenhang mit dem Proxy-Load-Balancing
- Hier wird als URL-Muster ein Balancer-Aliasname mit dem Pseudoprotokoll balancer:// angegeben; innerhalb des Containers stehen BalancerMember-Direktiven zur Definition der verschiedenen EinzelServer
- Beispiel
<Proxy balancer://music> BalancerMember music1.mynet.de BalancerMember music2.mynet.de </Proxy>
Der Alias balancer://music kann anschließend verwendet werden, um Pfade der verschiedenen Server per Reverse-Proxy-Funktionalität einzubinden
- Beispiel
ProxyPass /mp3 balancer://music/mp3
<ProxyMatch> ... </ProxyMatch> Einstellungen für Gruppen von Proxy-Ressourcen, auf die ein RegExp zutrifft
Modul mod_proxy Kontext Server, <VirtualHost> Syntax <ProxyMatch RegExp> ... </ProxyMatch> Standardwert nicht gesetzt
Dieser Container funktioniert genau wie <Proxy>, ermöglicht aber die Angabe eines Perl-kompatiblen regulären Ausdrucks als URL-Muster
- Das folgende Beispiel sorgt für die Deflate-Komprimierung aller GIF-, JPEG- und PNG-Bilder, die der Apache-Proxy ausliefert
<ProxyMatch \.(gif)|(jpg)|(png)$> SetOutputFilter DEFLATE </ProxyMatch>
ProxyRequests Proxy-Anfragen zulassen/verbieten
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyRequests On|Off Standardwert Off
Wenn Sie diese Direktive auf On setzen, werden Proxy-Anfragen zugelassen
- Weiter oben wurde bereits gezeigt, wie Sie dafür einen virtuellen Host mit einer bestimmten Portnummer einrichten können
- Es ist sehr wichtig, den Server gegen Zugriffe durch fremde Benutzer abzusichern, bevor Sie ProxyRequests einschalten
ProxyRemote Bestimmte Anfragen an einen anderen Proxy weiterreichen
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyRemote Muster Remote-Server Standardwert nicht gesetzt
Diese Direktive leitet Proxy-Anfragen, die der lokale Proxy empfangen hat, an einen anderen Proxy-Server weiter
- Der erste Parameter ist das URL-Muster der Proxy-Anfragen, der zweite die vollständige URL des Remote-Servers
- Das folgende Beispiel leitet alle Proxy-Anfragen an otherproxy.mynet.de weiter
ProxyRemote * http://otherproxy.mynet.de
ProxyRemoteMatch Gruppen von Anfragen weiterreichen, die einem RegExp entsprechen
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyRemoteMatch RegExp Remote-Server Standardwert nicht gesetzt
Die Direktive ProxyRemoteMatch funktioniert genau wie ProxyRemote mit dem Unterschied, dass das URL-Muster für die Proxy-Anfragen ein regulärer Ausdruck ist
- Hier sehen Sie ein Beispiel, das alle Proxy-Anfragen für Sounddateien (mp3, wav und aif) an soundproxy.mynet.de weiterreicht
ProxyRemoteMatch \.(mp3|wav|aif)$ \ http://soundproxy.mynet.de
NoProxy Adressen, für die kein Remote-Proxy verwendet wird
Modul mod_proxy Kontext Server, <VirtualHost> Syntax NoProxy Host [Host ...] Standardwert nicht gesetzt
Apache als Proxy-Server 13.1
Diese Direktive nimmt die angegebenen Hosts oder Adressblöcke von der Vermittlung der Anfrage an einen weiteren Proxy durch ProxyRemote aus
- Für die Liste der Hostnamen beziehungsweise IP-Adressen sind folgende Schreibweisen erlaubt
- Hostname ein vollständiger DNS-Hostname – Beispiel: www.mynet.de
- Domain-Name ein beliebig kurzes Teilstück, mit dem DNS-Namen enden können; stets mit führendem Punkt, um sie von Hostnamen zu unterscheiden – Beispiele
.mynet.de oder .de
- IP-Adresse Die IP-Adresse eines einzelnen Hosts – Beispiel: 196.23.17.52
- Teilnetz ein Adressfragment, das ein bestimmtes IP-Adress-Teilnetz kennzeichnet;
optional mit CIDR-Netzwerkbits oder Teilnetzmaske – Beispiele: 196.23, 196.23.17.0/24 oder 196.23.17.0/255.255.255.0
Nähere Erläuterungen zu diesen verschiedenen Adressangaben finden Sie in Kapitel 6, »Grundkonfiguration«, bei der Beschreibung der Direktive Allow
Hier ein Komplettbeispiel, das Anfragen für einen bestimmten Host und eine Domain aus der ProxyRemote-Weiterleitung ausschließt
- Alle Proxy-Anfragen an otherproxy.mynet.de weiterleiten ProxyRemote * otherproxy.mynet.de
- Einzelne Adressen ausschließen NoProxy .somenet.de www.othernet.de
ProxyBadHeader Bestimmt den Umgang mit ungültigen Antwort-Headern
Seit Version 2.0.44 Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyBadHeader IsError | Ignore | StartBody Standardwert IsError
Mithilfe dieser Direktive wird festgelegt, was geschehen soll, wenn die Antwort eines entfernten Servers einen Fehler enthält
- Folgende Verhaltensweisen sind möglich
- IsError: Apache beendet die Verarbeitung der Antwort und sendet dem Client eine Meldung mit dem Status 502 Bad Gateway
- Dies ist die Voreinstellung
- Ignore: Der fehlerhafte Header wird ignoriert und einfach weitergeleitet
- StartBody: Die Verarbeitung von Headern wird abgebrochen; der Rest der Antwort wird als Body betrachtet
ProxyBlock Ressourcen, für die Apache nicht als Proxy fungieren soll
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyBlock * | Wort | Host | Domain [Wort|Host|Domain ...] Standardwert nicht gesetzt
ProxyBlock ermöglicht die Angabe beliebiger Adressbestandteile – wenn diese gefunden werden, wird die entsprechende Proxy-Anfrage abgelehnt
- Die möglichen Elemente bedeuten Folgendes
- Wort: ein einzelner Partikel – z.B
- mynet
- Host: ein vollständiger Hostname – beispielsweise www.mynet.de
- Domain: ein beliebiges Teilstück eines Domain-Namens – etwa mynet.de
Das folgende Beispiel deaktiviert den Proxy-Zugriff auf alle Adressen, die den Bestandteil »pause« enthalten
ProxyBlock pause
ProxyDomain Domain-Name, der bei Proxy-Anfragen im Intranet automatisch angehängt wird
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyDomain Domain Standardwert nicht gesetzt
Diese Direktive ermöglicht die Definition eines Domain-Suffixes, das der Proxy automatisch an Hostnamen ohne Domain anhängt
- Beispiel
ProxyDomain .mynet.de
Falls der Proxy eine Anfrage mit der Adresse www erhält, wird diese automatisch zu www.mynet.de ergänzt
- Dies ist nützlich, wenn die Rechner in Ihrem Intranet ohne Domain-Suffix angesprochen werden
Apache als Proxy-Server 13.1
ProxyErrorOverride Bestimmt, ob der Proxy Fehlerseiten überschreiben soll
Seit Version 2.0 Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyErrorOverride On|Off Standardwert Off
Wenn Sie diese Direktive auf On setzen, ersetzt Ihr Proxy die Fehlermeldungsseiten entfernter Server durch seine eigenen
- Da Sie Fehlermeldungen mithilfe von ErrorDocument anpassen können (siehe Kapitel 8, »Weiterleitungen und Indizes«), können Sie auf diese Weise auch im Proxy-Betrieb Ihre eigenen Fehlerseiten verwenden
- Dies ist besonders bei einem Reverse-Proxy nützlich, weil damit neben den angezeigten URLs auch das Aussehen der Fehlermeldungen modifiziert werden kann
ProxyAddHeaders Bestimmt, ob der Proxy seine Informationen zu X-Forwarded*-Headern hinzufügen soll
Seit Version 2.3.10 Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyAddHeaders On|Off Standardwert On
Normalerweise fügt Apache in seiner Funktion als Proxy Informationen zu den HTTP-Erweiterungs-Headern X-Forwarded-For, X-Forwarded-Host und X-Forwarded-Server hinzu
- Wenn Sie dies explizit verhindern möchten, können Sie es wie folgt deaktivieren
ProxyAddHeaders off
ProxySourceAddress Lokale IP-Adresse für ausgehende Proxy-Verbindungen
Seit Version 2.3.9 Modul mod_proxy Kontext Server, <VirtualHost>
Syntax ProxySourceAddress IP-Adresse Standardwert nicht gesetzt
Mit dieser Direktive können Sie festlegen, dass ausgehende Proxy-Verbindungen eine bestimmte lokale IP-Adresse als Quelle verwenden sollen
- Wenn Sie dies nicht tun, wird für gewöhnlich diejenige IP-Adresse verwendet, über die die ursprüngliche Client-Anfrage empfangen wurde
- Beispiel
ProxySourceAddress 192.168.0.8
ProxyFtpDirCharset Legt den Zeichensatz für FTP-Verzeichnislistings fest
Seit Version 2.2.7 Modul mod_proxy_ftp; vor 2.3.5 mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyFtpDirCharset Zeichensatz Standardwert ISO-8859-1
Diese Direktive bestimmt den Zeichensatz, der verwendet wird, wenn mod_ proxy_ftp ein FTP-Verzeichnislisting erzeugt
- Der Standardwert ist ISO-8859-1;
das folgende Beispiel legt UTF-8 fest
ProxyFtpDirCharset UTF-8
ProxyFtpEscapeWildcards Escaping von Platzhalterzeichen beim Senden an den FTP-Server aktivieren/deaktivieren
Seit Version 2.3-beta Modul mod_proxy_ftp Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyFtpEscapeWildcards on|off Standardwert on
Standardmäßig werden die Platzhalterzeichen *, ?, [, { und ~ mit einem Backslash escaped, bevor sie an den FTP-Server gesendet werden
- Manche FTP-Server können damit nicht umgehen; in diesem Fall können Sie das Escaping wie folgt ausschalten
ProxyFtpEscapeWildcards off
Apache als Proxy-Server 13.1
ProxyFtpListOnWildcard Bei Platzhalterzeichen im Dateinamen eine Dateiliste oder eine Datei anfordern
Seit Version 2.3-beta Modul mod_proxy_ftp Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyFtpListOnWildcard on|off Standardwert on
Wenn die angeforderte Datei eines der Platzhalterzeichen *, ?, [, { oder ~ enthält, fordert Apache normalerweise eine Dateiliste an, auf die das Dateimuster passt Wenn Sie stattdessen Dateien anfordern möchten, die diese Platzhalter im Dateinamen enthalten, müssen Sie diese Direktive explizit auf off setzen
ProxyFtpListOnWildcard off
ProxyIOBufferSize Größe des Proxy-Datenpuffers
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyIOBufferSize Bytes Standardwert 8192
Diese Direktive bestimmt die Größe des internen Puffers, den mod_proxy für gelesene, aber noch nicht wieder ausgegebene Daten verwendet
- Die Voreinstellung
8.192 ist der Höchstwert; in aller Regel gibt es keinen Grund, einen kleineren Wert anzugeben
ProxyMaxForwards Höchstzahl von Proxys, durch die eine Anfrage weitergeleitet wird
Seit Version 2.0 Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyMaxForwards Anzahl Standardwert 10
Mithilfe von ProxyMaxForwards können Sie festlegen, wie viele aufeinanderfolgende Proxy-Server eine Anfrage passieren darf
- Die Einstellung gilt nur für
Anfragen, die keinen Max-Forwards-Header enthalten, und kann unfreiwillige Proxy-Schleifen verhindern oder DoS-Attacken erschweren
- Beispiel
ProxyMaxForwards 8
ProxyPass Bildet entfernte URLs in den lokalen Verzeichnisbaum ab
Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax 2.0: ProxyPass [Pfad] !|URL ab 2.1: ProxyPass [Pfad] !|URL [Schlüssel=Wert [Schlüssel=Wert ...]] [nocanon] [interpolate] Standardwert nicht gesetzt
Dies ist die Hauptdirektive für die Einrichtung von Reverse-Proxy-Optionen
- Sie funktioniert formal ähnlich wie Alias (siehe Kapitel 8, »Weiterleitungen und Indizes«), nur wird unter dem angegebenen URL-Pfad kein lokales Verzeichnis, sondern eine externe URL eingebunden
- Hier sehen Sie ein Beispiel, das unter dem URL-Pfad /test die Inhalte der Site www.mytest.com veröffentlicht
ProxyPass /test http://www.mytest.com
Anstelle einer URL können Sie auch das spezielle Element ! angeben – es bedeutet, dass unter dem angegebenen URL-Pfad keine Proxy-Operation stattfinden soll
- Eine solche Einschränkung muss vor der eigentlichen ProxyPass-Einstellung erfolgen
Das folgende Beispiel bindet unter dem URL-Pfad /othernet die Inhalte von www.othernet.de ein – außer in dem Verzeichnis /othernet/local, das vom lokalen Server verarbeitet wird
ProxyPass /othernet/local ! ProxyPass /othernet http://www.othernet.de
Seit Apache 2.1-beta verfügt mod_proxy über Connection-Pooling-Funktionen Diese und andere Optionen werden in dieser Direktive mithilfe von Schlüssel=Wert-Paaren eingestellt
- Sie alle können auch für die im weiteren Verlauf beschriebene Direktive BalancerMember verwendet werden
- Im Einzelnen sind folgende Schlüssel verfügbar
- min – Mindestanzahl von Verbindungen zum Backend-Server
- Der Standardwert ist 0
Apache als Proxy-Server 13.1
- max – Absolute Höchstanzahl (hard limit) der Verbindungen; kein Standardwert
- smax – Höchstzahl der Verbindungen, die geöffnet bleiben und keiner maximalen Lebensdauer unterliegen
- Der Standardwert entspricht dem Wert von max
- ttl – Lebensdauer von Verbindungen, die über die Anzahl smax hinausgehen, in Sekunden
- Standardmäßig nicht gesetzt
- timeout – Maximale Wartezeit auf das Senden von Daten
- Standardmäßig wird der Wert der Direktive ProxyTimeout verwendet
- connectiontimeout – Maximale Wartezeit beim Verbindungsaufbau
- Der Standardwert entspricht der Einstellung für timeout
- acquire – Maximale Wartezeit auf eine freie Verbindung im Connection-Pool;
standardmäßig nicht gesetzt
- disablereuse – Wenn Sie diesem Parameter den Wert on zuweisen, wird das Connection-Pooling verhindert, und jede Verbindung wird sofort nach Gebrauch wieder geschlossen
- Das kann notwendig sein, wenn Firewalls oder Round-Robin-DNS des Ursprungsservers verhindern, dass persistente Reverse-Proxy-Verbindungen funktionieren
- Der Standardwert off erlaubt dagegen das Connection-Pooling
- flushpackets – Diese Option ist zurzeit nur für AJP implementiert
- Sie bestimmt, ob Ausgabedaten des Servers gepuffert oder sofort gesendet werden
- Der Standardwert off besagt, dass die Daten standardmäßig gepuffert und nur im Bedarfsfall gesendet werden
- on sendet sie stets sofort
- Der dritte mögliche Wert, auto, sendet die Daten, wenn für eine bestimmte Anzahl von Millisekunden (durch flushwait festgelegt) keine Eingabe empfangen wurde
- flushwait – Die Anzahl von Millisekunden, die flushpackets im auto-Modus warten soll, bis die gepufferten Daten gesendet werden
- Der Standardwert ist 10
- keepalive – Wenn Sie den Wert on setzen, sendet Apache regelmäßig KEEP_
ALIVE-Pakete
- Wichtig bei Firewalls, die inaktive Verbindungen zu schnell unterbrechen
- Der Standardwert ist off
- retry – Wartezeit bis zu einem neuen Verbindungsversuch, falls eine Verbindung im Pool einen Fehler gemeldet hat
- Der Standardwert beträgt 60 Sekunden
- lbset – Mit dieser Option können Sie einem BalancerMember-Worker eine Ordnungszahl zuweisen
- Der Load-Balancer probiert zunächst die Worker mit der niedrigsten Ordnungszahl durch, bevor er solche mit höheren Ordnungszahlen verwendet
- Auf diese Weise können Sie Fallback-Load-Balancing-Cluster errichten, die aktiv werden, wenn das Hauptcluster ausfällt oder überlastet ist
- Der Standardwert ist 0
- ping – Nur für AJP
- Das AJP13-Protokoll unterstützt eine spezielle Anfrage namens CPING, auf die eine CPONG-Antwort erwartet wird, vergleichbar mit dem gewöhnlichen ICMP-ping
- Der Standardwert 0 deaktiviert dieses Feature;
bei einem höheren Wert sendet der Proxy CPING-Anfragen und wartet die angegebene Anzahl von Sekunden auf die CPONG-Antwort; er verwendet den betreffenden Server nur dann für die eigentliche Anfrage, wenn das CPONG rechtzeitig eintrifft
- Dieses Verfahren erhöht leicht den Netzwerk-Traffic, verhindert dafür aber das fruchtlose Versenden vollständiger Anfragen
- Benötigt als Server eine Tomcat-Version ab 3.3.2, 4.1.28, 5.0.13, 5.5.0 oder 6.0
- loadfactor – Bestimmt auf einer Prozentskala von 1 bis 100, wie stark der einzelne Rechner als Teil eines Load-Balancing-Clusters belastet wird
- Standardwert: 1
- route – Route eines Einzelrechners beim Load-Balancing, normalerweise nicht gesetzt
- Dieser Wert wird an eine eventuelle Session-ID angehängt
- redirect – Umleitungsroute
- Anfragen ohne Session-ID werden an den Rechner im Load-Balancing-Cluster weitergeleitet, dessen route-Wert dieser Angabe entspricht
- status – Status, den ein Worker beim Start besitzen soll
- Standardmäßig besitzt ein Worker zunächst keinen besonderen Status
- Die möglichen Werte sind die folgenden einzelnen Buchstaben
- D – deaktiviert (disabled)
- S – angehalten (stopped)
- I – Fehler ignorieren (ignore errors)
- H – Bereitschaft (hot-standby)
- E – Fehlerzustand (error)
Sie können mehrere Statusbuchstaben verwenden und ihnen optional ein + voranstellen, um sie hinzuzufügen (Standard), oder ein -, um sie zu entfernen
Bei der Weiterleitung an eine virtuelle balancer://-URL können Sie noch die folgenden speziellen Parameter angeben
- lbmethod – Legt die Load-Balancing-Methode fest: byrequests (Standard) verteilt die Last nach der Anzahl der Anfragen, während bytraffic die tatsächlich übertragenen Bytes in Betracht zieht
In Apache 2.3 wurden diese Funktionalitäten ausgelagert, die keine eigenen Direktiven bereitstellen, aber geladen sein müssen, um die jeweilige lbmethod-Einstellung verwenden zu können
- Gleichzeitig wurden neue Methoden hinzugefügt
Apache als Proxy-Server 13.1
- mod_lbmethod_bybusiness (Methodenname bybusiness) merkt sich, wie viele wartende Anfragen jedem Worker gerade zugewiesen sind, und weist eine neue Anfrage demjenigen mit der geringsten Anzahl zu
- Dies ist besonders sinnvoll, wenn die Worker eigene Warteschlangen für Anfragen besitzen
- mod_lbmethod_byrequests stellt die bereits genannte Methode bybusiness zur Verfügung
- mod_lbmethod_bytraffic stellt die ebenfalls schon genannte Methode bytraffic bereit
- mod_lbmethod_heartbeat (Methodenname heartbeat) orientiert sich an
»Lebenszeichen«-Anfragen (Heartbeats) der Worker, die innerhalb von Apache beispielsweise durch das ebenfalls neue Modul mod_heartbeat erzeugt werden können
- stickysession – Hier wird ein Wert wie JSESSIONID oder PHPSESSIONID eingetragen, damit eine bestimmte Session durchgehend von ein und demselben Einzelrechner des Clusters verarbeitet wird
- nofailover – Wenn Sie diese Option auf on setzen, wird eine Session abgebrochen, sobald der entsprechende Einzel-Server nicht mehr verfügbar ist oder einen Fehler meldet
- Auch dies ist wichtig, wenn Ihre Anwendungen keinen Wechsel einer Session auf einen anderen Server vertragen
- timeout – Wartezeit, bis ein Rechner des Balancing-Clusters verfügbar ist
- Der Standardwert ist 0, das heißt, es wird normalerweise nicht gewartet
- maxattempts – Die maximale Anzahl möglicher Fehlversuche, bevor der Verbindungsversuch aufgegeben wird
- Der Standardwert ist 1
- scolonpathdelim – Wird diese Option auf on gesetzt, dann gilt das Semikolon als Trennzeichen in Session-IDs
- Dies emuliert das Verhalten von mod_jk (siehe Kapitel 15, »Technologien zur Webprogrammierung«) im Umgang mit zusammengesetzten Session-Parametern wie JSESSIONID=3a4c9fa0d;foo= bar
Hinter den Schlüssel=Wert-Paaren können Sie optional noch die folgenden beiden Schlüsselwörter ohne Werte setzen
- nocanon – Normalerweise wird die URL der Anfrage kanonisiert, bevor die Proxy-Anfrage weitergeleitet wird; konkret wird der kanonische Server-Name verwendet (siehe UseCanonicalName in Kapitel 6, »Grundkonfiguration«) und Path-Info (Pfadangaben hinter der eigentlichen URL) entfernt
- Diese Option sorgt dafür, dass die ungeparste URL übergeben wird; in einigen Fällen kann dies notwendig sein
- interpolate – Sorgt in Zusammenarbeit mit der weiter unten beschriebenen Direktive ProxyPassInterpolateEnv dafür, dass Umgebungsvariablen in der Form ${Variablenname} in der URL für die Proxy-Anfrage interpoliert werden
Beachten Sie, dass in diesem Kontext nicht alle CGI-Umgebungsvariablen (siehe Kapitel 14, »CGI«) zur Verfügung stehen, sodass Sie einige Ersetzungen mittels mod_rewrite vornehmen müssen
- Diese Option ist seit Apache 2.2.9
verfügbar
ProxySet Optionen für Balancer und BalancerMember setzen
Seit Version 2.2 Modul mod_proxy Kontext <Directory>, <Location>, <Files> Syntax ProxySet URL Schlüssel=Wert [Schlüssel=Wert ...] Standardwert nicht gesetzt
ProxySet ist eine alternative Methode, sämtliche unter ProxyPass vorgestellten Schlüssel=Wert-Optionen für Load-Balancer und BalancerMember zu setzen Wenn Sie die Direktive innerhalb eines <Proxy>-Containers einsetzen, können Sie den ersten Parameter (URL) weglassen, da die URL bereits für den Container gesetzt wird
- Beispiele
ProxySet balancer://cluster lbmethod=bytraffic
<Proxy balancer://cluster> BalancerMember www1.mynet.de BalancerMember www2.mynet.de BalancerMember www3.mynet.de ProxySet keepalive=On </Proxy> ProxyPass /balanced balancer://cluster
ProxyPassMatch Bildet entfernte URLs mithilfe regulärer Ausdrücke in den lokalen Verzeichnisbaum ab
Seit Version 2.2.5 Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyPassMatch [Regexp] !|URL [Schlüssel=Wert [Schlüssel=Wert ...]] Standardwert nicht gesetzt
Apache als Proxy-Server 13.1
Diese Direktive funktioniert genau wie ProxyPass, mit der Ausnahme, dass anstelle des zu ersetzenden Pfads ein regulärer Ausdruck angegeben werden kann, was die Konfiguration flexibler macht
- In der Proxy-Anfrage-URL können geklammerte Teilausdrücke aus dem regulären Ausdruck dann wie üblich als $1, $2 usw
- eingesetzt werden
Das folgende Beispiel bindet gängige Mediendateien unter dem URL-Pfad /media per Reverse-Proxy-Anfrage an media.mynet.de ein
ProxyPassMatch ^/media/(.*)\.(gif|jpg|png|swf|avi) \ http://media.mynet.de/$1.$2
ProxyPassInterpolateEnv Interpoliert Umgebungsvariablen in Proxy-Anfrage-URLs
Seit Version 2.2.9 Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyPassInterpolateEnv On|Off Standardwert Off
Wenn Sie dieser Direktive den Wert On zuweisen, wird die Interpolation von Umgebungsvariablen in ProxyPass, ProxyPassReverse, ProxyPassReverseCookieDomain und ProxyPassReverseCookiePath grundsätzlich aktiviert
- Zusätzlich muss in der entsprechenden Direktive selbst noch das Schlüsselwort interpolate gesetzt werden (siehe Beschreibung der jeweiligen Direktive)
- Danach können Sie einige Umgebungsvariablen in der Form ${Variablenname} in den Proxy-Anfrage-URLs verwenden
- Da dieses Feature zulasten der Server-Performance geht, sollten Sie diese Direktive nur dann aktivieren, wenn es wirklich notwendig ist
ProxyPassReverse URL im HTTP-Antwort-Header eines Reverse-Proxys anpassen
Modul mod_proxy Kontext Server, <VirtualHost>, <Directory>, <Location>, <Files> Syntax ProxyPassReverse [Pfad] URL [interpolate] Standardwert nicht gesetzt
Diese Direktive arbeitet mit ProxyPass zusammen; häufig werden sogar für beide Direktiven dieselben Argumente angegeben
- ProxyPassReverse sorgt dafür, dass die URL in bestimmten HTTP-Antwort-Headern von Weiterleitungen (3xx-Status
codes) angepasst wird
- Namentlich geht es um die Header Location, ContentLocation und URI
- Betrachten Sie dazu folgendes Beispiel
ProxyPass /othernet http://www.othernet.de ProxyPassReverse /othernet http://www.othernet.de
Angenommen, ein Client fordert die URL www.mynet.de/othernet/test an
- Dies entspricht aufgrund der ProxyPass-Direktive in Wirklichkeit der Adresse www.othernet.de/test
- Wenn /test ein Verzeichnis auf dem entsprechenden Server ist, können Sie davon ausgehen, dass die Antwort eine Weiterleitung auf www.othernet.de/test/ ist (das Problem mit dem abschließenden Slash wird in Kapitel 6, »Grundkonfiguration«, genau erläutert)
- Die relevanten Elemente der HTTP-Antwort des Servers www.othernet.de sehen mit anderen Worten folgendermaßen aus
HTTP/1.1 301 Moved Permanently Location: http://www.othernet.de/test/
An dieser Stelle sorgt ProxyPassReverse dafür, dass die URL wieder in das URLSchema des Proxys umgewandelt wird
- Der Location-Header, den der Client zu Gesicht bekommt, sieht also folgendermaßen aus
Location: http://www.mynet.de/othernet/test/
Der Hostname in den geänderten Headern wird übrigens nicht unbedingt aus der ursprünglichen Anfrage übernommen, sondern gemäß der UseCanonicalNameEinstellung gesetzt
Auch für diese Direktive können Sie die bei ProxyPass erläuterte Option interpolate setzen, um Umgebungsvariablen mittels ${Variablenname} zu interpolieren; dazu muss wiederum die Direktive ProxyPassInterpolateEnv eingeschaltet sein
ProxyPassReverseCookieDomain Domain in Cookies anpassen, die über den Reverse-Proxy übertragen werden
Seit Version 2.1-beta Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyPassReverseCookieDomain interne-Domain externe-Domain [interpolate] Standardwert nicht gesetzt
Auf ähnliche Weise und aus demselben Grund wie ProxyPassReverse ändert diese Direktive den Domain-Bestandteil in SetCookie-Headern
- Beispiel
Apache als Proxy-Server 13.1
ProxyPassReverseCookieDomain mynet.de othernet.de
Näheres über Cookies und ihre Bestandteile erfahren Sie im PHP-Abschnitt von Kapitel 15, »Technologien zur Webprogrammierung«
ProxyPassReverseCookiePath Pfad in Cookies anpassen, die über den Reverse-Proxy übertragen werden
Seit Version 2.1-beta Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyPassReverseCookiePath interner-Pfad externer-Pfad [interpolate] Standardwert nicht gesetzt
Diese Direktive ändert entsprechend den Pfadbestandteil eines SetCookie-Headers
BalancerMember Definition eines Einzel-Servers in einem Load-Balancing-Cluster
Seit Version 2.1-beta Modul mod_proxy Kontext Server, <VirtualHost> Syntax BalancerMember Host [Schlüssel=Wert [Schlüssel=Wert ...]] Standardwert nicht gesetzt
Mithilfe dieser Direktive legen Sie die einzelnen Hosts eines Load-Balancing-Clusters fest
- Dies muss innerhalb eines <Proxy>-Containers mit einer balancer://Alias-URL geschehen
- Diese URL können Sie anschließend für ProxyPass-Direktiven verwenden, um die Last auf die verschiedenen BalancerMember zu verteilen
Das folgende Beispiel definiert drei HTTP-Server als Load-Balancing-Cluster und bindet dieses Cluster anschließend unter dem URL-Pfad /balanced ein
<Proxy balancer://cluster> BalancerMember www1.mynet.de BalancerMember www2.mynet.de BalancerMember www3.mynet.de </Proxy> ProxyPass /balanced balancer://cluster
Optional können Sie für jeden BalancerMember eine Reihe von Optionen im Format Schlüssel=Wert angeben
- Die möglichen Schlüssel wurden bereits bei der Direktive ProxyPass erläutert
BalancerGrowth Nachträgliches Wachstumspotenzial für die Anzahl der BalancerMember
Seit Version 2.3.13 Modul mod_proxy Kontext Server, <VirtualHost> Syntax BalancerGrowth Anzahl Standardwert 5
Diese Direktive legt fest, wie viele BalancerMember für einen virtuellen Host über die vorkonfigurierte Anzahl hinaus hinzugefügt werden können
ProxyPreserveHost Host-Header der Anfrage an Reverse-Proxy durchreichen
Seit Version 2.0.31 Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyPreserveHost On|Off Standardwert Off
Wenn Sie diese Direktive aktivieren, wird bei Reverse-Proxy-Anfragen der HostHeader aus der Client-Anfrage an den entfernten Server durchgereicht
- In den meisten Fällen ist dies nicht sinnvoll; nur im Zusammenhang mit speziellen Konfigurationen für namensbasierte virtuelle Hosts kann es manchmal erforderlich sein, den ursprünglichen Host-Header weiterzuleiten
ProxyReceiveBufferSize Netzwerkpuffergröße für Proxy-Verbindungen
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyReceiveBufferSize Bytes Standardwert 0
Apache als Proxy-Server 13.1
Diese Direktive ermöglicht die Festlegung des TCP-Puffers für Proxy-Verbindungen
- Normalerweise bestimmt der Vorgabewert 0, dass die Vorgabe des jeweiligen Betriebssystems verwendet werden soll
- Wenn Sie den Puffer manuell vergrößern möchten, um den Datendurchsatz zu steigern, muss der Wert größer als
512 sein
- Beispiel
ProxyReceiveBufferSize 1024
ProxyTimeout Timeout für Proxy-Anfragen
Seit Version 2.0.31 Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyTimeout Sekunden Standardwert 300
Mit dieser Direktive können Sie festlegen, wie lange der Proxy auf die Antwort eines entfernten Servers warten soll, bevor er die Anfrage als gescheitert betrachtet
- Die Voreinstellung von 300 Sekunden (5 Minuten) ist bei Weitem ausreichend
ProxyVia Konfiguration des Via-Headers für Proxy-Antworten
Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyVia On|Off|Full|Block Standardwert Off
Diese Direktive bestimmt, wie der Proxy mit dem Via-Header in HTTP-Anfragen und -Antworten umgehen soll
- Dieser Header wird in Kapitel 2, »Funktionsweise von Webservern«, näher erläutert
- Er sollte eine Liste sämtlicher Proxys enthalten, über die die Anfrage weitergeleitet wurde
- Sie können einen der vier folgenden Werte angeben
- On
- Der Proxy fügt den eigenen Hostnamen zum Via-Header jeder Anfrage und Antwort hinzu
- Off
- Eventuell vorhandene Via-Header werden unbehelligt weitergeleitet;
Apache fügt keinen eigenen Eintrag hinzu
- Full
- Apache erzeugt Via-Header wie bei der Einstellung On und fügt zusätzlich seine Versionsinformationen als Via-Kommentar hinzu
- Block
- Der Proxy fügt keinen Via-Eintrag hinzu und entfernt darüber hinaus alle bereits vorhandenen Via-Header
AllowCONNECT Legt fest, über welche TCP-Ports CONNECT-Anfragen erlaubt sind
Modul mod_proxy_connect; vor 2.3.5 mod_proxy Kontext Server, <VirtualHost> Syntax AllowCONNECT Port [Port ...] seit 2.3.7 AllowCONNECT Port[-Port] [Port[-Port] ...] Standardwert 443 563
Diese Direktive bestimmt das Verhalten der SSL-Tunnelung über mod_proxy_ connect: Sie bestimmt, für welche Server-TCP-Ports CONNECT-Anfragen weitergeleitet werden
- Standardmäßig sind nur die Ports 443 (HTTPS) und 563 (snews)
aktiviert
- Wenn Sie in Ausnahmefällen noch andere Ports benötigen – etwa weil Sie Ihren SSL-Server nicht für Port 443 konfiguriert haben –, können Sie sie durch Leerzeichen getrennt angeben
- Beispiel
AllowCONNECT 443 563 4433
Seit Version 2.3.7 können anstelle einzelner Ports auch Port-Bereiche in der Schreibweise Startportnummer-Endportnummer angegeben werden
- Beispiel
AllowCONNECT 443 563 4433-4439
ProxyStatus Bestimmt, ob mod_status Informationen über den Load-Balancer-Status veröffentlichen soll
Seit Version 2.2 Modul mod_proxy Kontext Server, <VirtualHost> Syntax ProxyStatus On|Off|Full Standardwert Off
ProxyStatus bestimmt, ob das in Kapitel 8, »Weiterleitungen und Indizes«, vorgestellte Modul mod_status Informationen über den Status des Proxy-Load-Balan
Apache als Proxy-Server 13.1
cings veröffentlicht
- Wenn Sie die Direktive auf On oder Full (Synonym) setzen, werden diese Informationen ausgegeben, bei der Standardeinstellung Off nicht