Apache/13 Proxy und Cache/Proxy/Proxy-Direktiven
Proxy-Direktiven
<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 https://www.trojan-horse.com zugreift
<Proxy https://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 * https://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)$ \ https://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
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 Apache/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
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
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 https://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 https://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
- 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
- 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
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) \ https://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 https://www.othernet.de ProxyPassReverse /othernet https://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: https://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: https://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
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
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 Apache/Weiterleitungen und Indizes, vorgestellte Modul mod_status Informationen über den Status des Proxy-Load-Balancings veröffentlicht
- Wenn Sie die Direktive auf On oder Full (Synonym) setzen, werden diese Informationen ausgegeben, bei der Standardeinstellung Off nicht