mod_proxy HTTP/1.1 Proxy-/Gateway-Server Erweiterung mod_proxy.c proxy_module Achtung

Rufen Sie die Direktive ProxyRequests erst dann auf, wenn ein gesicherter Zugriff gewährleistet ist. Zugängliche Proxy-Server sind sowohl für Ihr Netzwerk als auch für das Internet im Allgemeinen eine Gefahrenquelle.

Dieses Modul implementiert einen Proxy oder ein Gateway für Apache. Es implementiert das Proxy-Verfahren für FTP, CONNECT (für SSL), HTTP/0.9, HTTP/1.0, und für HTTP/1.1. Das Modul kann für die Verbindung zu anderen Proxy-Modulen für diese und andere Protokolle konfiguriert werden.

Die Proxy-Eigenschaften von Apache sind neben dem Modul mod_proxy auch auf andere Module verteilt: mod_proxy_http, mod_proxy_ftp und mod_proxy_connect. Sollen bestimmte dieser Proxy-Funktionen genutzt werden, dann müssen das Modul mod_proxy und die entsprechenden Module für den Server geladen werden (entweder statisch beim Kompilieren oder dynamisch über die LoadModule-Direktive).

Über andere Module stehen außerdem erweiterte Eigenschaften zur Verfügung. Das Caching ermöglichen mod_cache und verwandte Module. Die Kontaktaufnahme zu entfernten Servern über das SSL/TLS-Protokoll wird durch die SSLProxy*-Direktiven des Moduls mod_ssl ermöglicht. Diese zusätzlichern Module müssen geladen und konfiguriert werden, damit ihre Vorteile genutzt werden können.

mod_cache mod_proxy_http mod_proxy_ftp mod_proxy_connect mod_ssl
Einfache und Reverse-Proxies

Der Apache kann als einfacher und Reverse-Proxy konfiguriert werden.

Ein einfacher Proxy-Server liegt zwischen dem Client und dem Zielserver. Um Inhalte vom Zielserver zu erhalten, sendet der Client eine Anfrage an den Proxy und gibt dabei den Zielserver an. Stellvertretend für den Client fodert der Proxy die Inhalte vom Zielserver an und reicht sie an den Client weiter. Der Client muss für den Zugriff auf andere Sites über einen Proxy entsprechend konfiguriert werden.

Proxies werden häufig eingesetzt, um internen Clients, die hinter einer Firewall liegen, Zugriff auf das Internet zu ermöglichen. Der Proxy kann durch Caching (aktiviert über das Modul mod_cache) die Netzwerkbelastung senken.

Der Proxy wird mit der ProxyRequests-Direktive aktiviert. Da Proxys den Clients über den Server anoymen Zugriff auf beliebige Sites erlauben, muss der Server so geschützt werden, dass nur autorisierte Clients auf den Proxy zugreifen können, bevor dieser aktiviert wird.

Ein Reverse-Proxy erscheint dem Client dagegen wie ein gewöhnlicher Webserver. Der Client muss nicht besonders konfiguriert werden. Er sendet normale Anfragen nach Inhalten aus dem Name-Space des Reverse-Proxy. Dieser entscheidet dann, wohin die Anfragen gesendet werden und liefert die Inhalte so an den Client aus, als wäre er der Zielserver.

Der Reverse-Proxy sollen Internet-Benutzern Zugriff auf einen Server gewähren, der hinter einem Firewall liegt. Mit Reverse-Proxies kann darüber hinaus die Belastung auf mehrere Backend-Server verteilt oder mit Hilfe des Caching langsame Backend-Server unterstützt werden. Ferner können Reverse-Proxies auch dafür genutzt werden, mehrere Server in einen URL-Raum zu integrieren.

Ein Reverse-Proxy wird mit der ProxyPass-Direktive oder dem [P]-Flag für die RewriteRule-Direktive aktiviert. Die Direktive ProxyRequests ist nicht erforderlich, um einen Reverse-Proxy einzurichten.

Beispiele

Die folgenden Beispiele sollen nur einen groben Überblick vermitteln. In der Dokumentation finden Sie weitere Hinweise zu den einzelnen Direktiven.

Soll zusätzlich das Caching aktiviert werden, dann schlagen Sie in der Dokumentation zum Modul mod_cache nach.

Einfacher Proxy ProxyRequests On
ProxyVia On

<Proxy *>
Order deny,allow
Deny from all
Allow from internal.example.com
</Proxy>
Reverse-Proxy ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
Den Zugriff auf den Proxy steuern

Der Zugriff auf einen Proxy kann mit einem Proxy-Kontrollblock gesteuert werden:

<Proxy *>
Order Deny,Allow
Deny from all
Allow from 192.168.0
</Proxy>

Weitere Informationen zu Direktiven für die Zugriffskontrolle finden Sie unter mod_access.

Beim Einsatz eines einfachen Proxy ist die Zugriffskontrolle (über die ProxyRequests-Direktive) sehr wichtig, da sonst jeder Client über Ihren Server auf beliebige Hosts zugreifen kann, ohne seine Identität preisgeben zu müssen. Das stellt sowohl für Ihr Netzwerk als auch für das Internet eine Gefahr dar. Bei einem Reverse-Proxy (mit der Direktive ProxyPass und der Option ProxyRequests Off), ist die Zugriffskontrolle weniger problematisch, weil die Clients nur auf speziell konfigurierte Hosts zugreifen können.

FTP-Proxy
Warum lässt sich der Dateityp <var>xxx</var> nicht über FTP herunterladen?

Möglicherweise wurde dieser Dateityp in der Konfigurationsdatei mime.types für den Proxy nicht als application/octet-stream definiert. Eine sinnvolle Definition wäre:

application/octet-stream   bin dms lha lzh exe class tgz taz
Wie kann für den Dateityp <var>xxx</var> ein ASCII-Download über FTP erzwungen werden?

In den seltenen Situation, in denen eine ASCII-Übertragung über FTP anstatt einer standardmäßigen binären Übertragung erfolgen muss, kann die Voreinstellung für das Modul mod_proxy durch das Suffix ;type=a in der Anfrage überschrieben und so eine ASCII-Übertragung erzwungen werden. (FTP-Verzeichnislisten werden immer im ASCII-Modus übertragen.)

Wie kann auf FTP-Dateien außerhalb des eigenen Stammverzeichnisses zugegriffen werden?

Ein FTP-URI wird relativ zum Stammverzeichnis des angemeldeten Benutzers interpretiert. Ein Zugriff auf darüberliegende Verzeichnisse mit Hilfe der Schreibweise /../ ist jedoch nicht möglich, da die Punkte vom Browser interpretiert und nicht an den FTP-Server gesendet werden. Um dieses Problem zu umgehen, wurde der sogenannte Squid%2f hack für den Apache-Proxy implementiert. Diese Lösung verwenden auch andere bekannte Proxy-Server wie zum Beispiel der Squid Proxy Cache. Durch Voranstellung von /%2f vor den Pfad, wird der Proxy veranlasst, das FTP-Verzeichnis / und nicht das Stammverzeichnis als Ausgangspunkt zu wählen. Die Datei /etc/motd wird beispielsweise mit folgender URL angefordert:

ftp://user@Host/%2f/etc/motd
Wie kann ein FTP-Passwort in Klartext in der URL-Zeile des Browsers verborgen werden?

Für die Anmeldung bei einem FTP-Server mit Benutzername und Passwort verwendet der Apache unterschiedliche Strategien. Fehlen Benutzername und Passwort in der URL, nimmt der Apache eine anonyme Anmeldung am FTP-Server vor:

user: anonymous
password: apache_proxy@

Bei den meisten FTP-Servern, die für den anonymen Zugriff eingerichtet sind, funktioniert dieses Verfahren.

Bei einer persönlichen Anmeldung kann der Benutzername wie folgt in die URL eingebettet werden:

ftp://Benutzername@Host/Dateiname

Fragt der FTP-Server für diesen Benutzernamen nach einem Passwort (was der Fall sein sollte), dann antwortet der Apache mit dem Statuscode 401 (Authorisierung erforderlich). Daraufhin öffnet der Browser das Dialogfeld für die Eingabe von Benutzername und Passwort. Nach Eingabe des Passworts wird versucht, die Verbindung herzustellen. Gelingt dies, wird die angeforderte Datei zugesendet. Der Vorteil dieses Verfahrens liegt darin, dass der Browser das Passwort nicht im Klartext anzeigt, was bei der anderen Variante der Fall wäre:

ftp://Benutzername:Passwort@Host/Dateiname Hinweis

Das auf diese Weise übertragene Passwort ist nicht verschlüsselt. Es wird zwischen dem Browser und dem Apache Proxy-Server als base64-kodierter Klartext und zwischen dem Apache-Proxy und dem FTP-Server als einfacher Klartext ausgetauscht. Deshalb ist beim Zugriff auf den FTP-Server über HTTP (oder generell vorm Zugriff auf persönliche Dateien über FTP) Vorsicht geboten, da bei Verwendung unsicherer Kanäle auf das Passwort zugegriffen werden kann.

Langsamer Start

Bei Verwendung der ProxyBlock-Direktive werden die IP-Adressen der Hostnamen gesucht und während des Start für den späteren Gebrauch zwischengespeichert. Dafür werden einige oder mehre Sekunden benötigt, je nach der Geschwindigkeit, mit der die Suche erfolgt.

Intranet-Proxy

Ein in einem Intranet gelegener Apache Proxy-Server muss externe Anfragen über den Firewall weiterreichen (die ProxyRemote-Direktive muss so konfiguriert werden, dass das entsprechende Schema an den Firewall-Proxy weitergeleitet wird). Muss er auf Ressourcen innerhalb des Intranets zugreifen, kann er bei Zugriffen auf Hosts den Firewall umgehen. Mit der Direktive NoProxy kann angegeben werden, auf welche Hosts im Intranet direkt zugegriffen werden kann.

Bei Zugriffen aus einem Intranet heraus vergessen die Benutzer häufig den lokalen Domänennamen bei ihren WWW-Anfragen anzugeben (zum Beispiel "http://IrgendeinHost/" anstatt http://IrgendeinHost.Beispiel.com/). Einige kommerzielle Proxy-Server lassen das durchgehen und bedienen die Anfrage, indem sie eine lokale Domäne unterstellen. Wird die ProxyDomain-Direktive verwendet und wurde der Server als Proxy-Dienst eingerichtet, kann der Apache eine Umleitung vornehmen und den Client zur korrekten Angabe der Serveradresse auffordern. Dieses Verfahren ist vorzuziehen, da die Lesezeichendateien des Benutzers dann den vollstänbdigen Hostnamen enthalten.

Protokollanpassungen

Für Situationen, in denen ein Server keine Keepalive-Anweisungen verwenden oder HTTP/1.1 nicht korrekt implementiert ist, gibt es die zwei Umgebungsvariablen force-proxy-request-1.0 und proxy-nokeepalive, die für HTTP/1.0-Übertragungen ohne Keepalive-Aufforderung gesetzt werden:

<Location /buggyappserver/>
ProxyPass http://buggyappserver:7001/foo/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>
Proxy Container für Direktiven für Proxy-Ressourcen <Proxy Jokerzeichen-URL> ...</Proxy> server configvirtual host

Direktiven in Proxy-Abschnitten gelten nur für Proxy-Inhalte. Jokerzeichen sind zulässig.

Im folgenden Beispiel haben nur Hosts aus dem Bereich yournetwork.example.com über den Proxy Zugriff auf die Inhalte des Servers:

<Proxy *>
Order Deny,Allow
Deny from all
Allow from yournetwork.example.com
</Proxy>

Im nächsten Beispiel werden alle Dateien aus dem Verzeichnis foo von example.com mit dem INCLUDES-Filter verarbeitet, wenn sie über den Proxy-Server gesendet werden:

<Proxy http://example.com/foo/*>
SetOutputFilter INCLUDES
</Proxy>
ProxyBadHeader Legt fest, wie fehlerhafte Header-Zeilen behandelt werden. ProxyBadHeader IsError|Ignore|StartBody ProxyBadHeader IsError server configvirtual host Seit Version 2.0.44

Die ProxyBadHeader-Direktive steuert das Verhalten des Moduls mod_proxy beim Empfang fehlerhafter Header-Zeilen (z.B. fehlende Doppelpunkte). Folgende Argumente sind möglich:

IsError
Abbruch der Bearbeitung und Rückgabe des Status 502 (Bad Gateway). Dies entspricht der Voreinstellung.
Ignore
Fehlerhafte Header-Zeilen werden ignoriert.
StartBody
Beim Empfang der ersten fehlerhaften Header-Zeile werden die darauffolgenden Daten als HTTP-Body verarbeitet. Diese Lösung ist für unsauber arbeitende Backend-Server gedacht, die die Leerzeile zwischen Header und Body weglassen.
ProxyMatch Container für Direktiven beim Vergleich regulärer Ausdrücke für Proxy-Ressourcen <ProxyMatch regex> ...</ProxyMatch> server configvirtual host

Die ProxyMatch-Direktive unterscheidet sich von der Proxy-Direktive nur darin, dass sie URLs mit Hilfe regulärer Ausdrücke vergleicht.

ProxyPreserveHost Verwendung der vom Client übermittelten HTTP-Host-Header für Proxy-Anfragen ProxyPreserveHost On|Off ProxyPreserveHost Off server configvirtual host Ab Apache 2.0.31

Wird diese Option aktiviert, wird der Host-Header des Clients für die Anfrage und nicht der mit der ProxyPass-Anweisung verwendet.

Im Normalfall sollte diese Option auf Off gesetzt werden. Sie ist für besondere Situationen gedacht, wo der ursprüngliche Host-Header vom Backend-Server benötigt wird.

ProxyRequests Aktiviert das Proxy-Modul. ProxyRequests On|Off ProxyRequests Off server configvirtual host

Erlaubt oder verhindert die Funktion des Apache als einfacher Proxy-Server. (Wird ProxyRequests auf Off gesetzt, dann wird dadurch die ProxyPass-Direktive nicht deaktiviert.)

Für Reverse-Proxy-Funktionen sollte diese Option auf Off gesetzt werden.

Für die Proxy-Funktionalität für HTTP- oder FTP-Sites müssen die Module mod_proxy_http und/oder mod_proxy_ftp geladen werden.

Achtung

Aktivieren Sie die Proxy-Funktion erst dann mit der Direktive ProxyRequests, wenn Sie den Server geschützt haben. Offene Proxy-Server gefährden sowohl Ihr eigenes Netzwerk als auch das Internet insgesamt.

ProxyRemote Für bestimmte Anfragen wird ein Proxy aus dem Netzwerk in Anspruch genommen. ProxyRemote match Remote-Server server configvirtual host

Definiert Proxies im Netzwerk für Weiterleitungen. match gibt entweder den Namen eines URL-Schemas, welches der Server im Netzwerk unterstützt, oder eine partielle URL an, für die der Server benutzt werden soll. Mit * wird angezeigt, dass der Server für alle Anfragen kontaktiert werden soll. Remote-Server ist eine partielle URL für den Server aus dem Netzwerk. Die Syntax lautet:

remote-server = Schema://Hostname[:Port]

Schema gibt gibt das für die Kommunikation mit dem Server im Netzwerk zu verwendende Protokoll an. Dieses Modul unterstützt auschließlich http.

Beispiel ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
ProxyRemote * http://cleversite.com
ProxyRemote ftp http://ftpproxy.mydomain.com:8080

Im letzten Beispiel reicht der Proxy FTP-Anfragen, die in eine weitere HTTP-Proxy-Anfrage eingekapselt sind, an einen Proxy weiter, der sie bearbeiten kann.

Diese Option unterstützt auch eine Reverse-Proxy-Konfiguration. Ein Backend-Webserver kann in den URL-Raum eines virtuellen Host eingebettet werden, selbst wenn dieser Server von einem anderen Proxy verborgen wird.

ProxyRemoteMatch Für bestimmte Anfragen, die über einen Vergleich regulärer Ausdrücke ermittelt werden, wird ein Proxy aus dem Netzwerk in Anspruch genommen. ProxyRemoteMatch RegAusdruck Remote-Server server configvirtual host

Die ProxyRemoteMatch-Direktive unterscheidet sich von der Direktive ProxyRemote nur dadurch, dass das erste Argument ein regulärerer Ausdruck ist, der mit der angeforderten URL verglichen wird.

ProxyPass Ordnet Server aus dem Netzwerk lokalen URLs zu. ProxyPass [Pfad] !|URL server configvirtual host directory

Diese Direktive ermöglicht die Zurodnung anderer Server zu URLs des lokalen Servers. Der lokale Server agiert nicht als Proxy im herkömmlichen Sinn, sondern wirkt wie ein Spiegel des entfernten Servers. Pfad gibt den lokalen virtuellen Pfad an. URL ist eine partielle URL für den entfernten Server, die keine Abfragezeichenfolge enthalten darf.

Hat der lokale Server die Adresse http://example.com/, dann sorgt die Anweisung

ProxyPass /mirror/foo/ http://backend.example.com/

dafür, dass eine lokale Anfrage nach http://example.com/mirror/foo/bar intern in eine Proxy-Anfrage nach http://backend.example.com/bar umgewandelt wird.

Die Direktive ! ist für Situationen gedacht, in denen ein Unterverzeichnis ausgenommen werden soll:

ProxyPass /mirror/foo/i !
ProxyPass /mirror/foo http://backend.example.com

In diesem Beispiel werden alle Anfragen nach /mirror/foo an backend.example.com weitergeleitet, ausgenommen sind aber Anfragen nach /mirror/foo/i.

Hinweis

Die Reihenfolge der Anweisungen muss beachtet werden. Die Ausnahmen müssen vor der allgemeinen Anweisung stehen.

Innerhalb eines Location-Abschnitts wird das erste Argument weggelassen und das lokale Verzeichnis aus dem Location-Abschnitt übernommen.

Die ProxyRequests-Direktive sollte normalerweise auf off gesetzt werden, wenn die ProxyPass-Direktive benutzt wird.

Weitere Möglichkeiten zur Reverse-Proxy-Konfiguration bietet die RewriteRule-Direktive mit dem [P]-Flag.

ProxyPassReverse Korrigiert die URL im HTTP-Antwort-Header eines internen Proxy-Servers. ProxyPassReverse [Pfad] URL server configvirtual host directory

Mit dieser Direktive bereinigt der Apache die URL in den Location-, Content-Location- und URI-Headern bei HTTP-Umleitungen. Das ist erforderlich, wenn der Apache als Reverse-Proxy dient, um eine Umgehung des internen Proxy infolge von HTTP-Umleitungen zu Backend-Servern hinter dem Proxy zu vermeiden.

Nur der bereits erwähnte HTTP-Antwort-Header wird umgeschrieben. Andere Antwort-Header oder URL-Verweise innerhalb der HTML-Seiten bleiben unverändert. Das bedeutet, dass im Proxy-Inhalt vorhandene absolute URL-Verweise den Proxy umgehen. Mit dem Modul mod_proxy_html von Nick Kew können die HTML-Seiten untersucht und URL-Verweise umgeschrieben werden.

Der Pfad ist ein lokaler virtueller Pfad. Die URL ist wie bei der ProxyPass-Direktive eine partielle URL für den entfernten Server.

Besitzt beispielsweise der lokale Server die Adresse http://example.com/, dann sorgen die Direktiven

ProxyPass /mirror/foo/ http://backend.example.com/
ProxyPassReverse /mirror/foo/ http://backend.example.com/

nicht nur für die interne Umwandlung einer lokale Anfrage nach http://example.com/mirror/foo/bar in eine Proxy-Anfrage nach http://backend.example.com/bar (die ProxyPass-Funktionalität). Auch vom Server backend.example.com gesendete Umleitungen werden berücksichtigt: wird http://backend.example.com/bar nach http://backend.example.com/quux umgeleitet, dann führt der Apache den Abgleich für http://example.com/mirror/foo/quux durch, bevor die HTTP-Umleitungsantwort an den Client gesendet wird. Dabei wird der für die URL verwendete Hostname unter Berücksichtigung der UseCanonicalName-Direktive ausgewählt.

Diese ProxyPassReverse-Direktive kann auch in Verbindung mit der Proxy-Pass-Through Eigenschaft (RewriteRule ... [P]) des Moduls mod_rewrite verwendet werden, weil sie nicht von einer entsprechenden ProxyPass-Direktive abhängt.

Innerhalb eines Location-Abschnitts wird das erste Argument weggelassen und das lokale Verzeichnis aus dem Location-Abschnitt genommen.

AllowCONNECT Ports, über die eine CONNECT-Verbindung über den Proxy hergestellt werden kann. AllowCONNECT Port [Port] ... AllowCONNECT 443 563 server configvirtual host

Die AllowCONNECT-Direktive nennt Ports, über die der Proxy CONNECT-Zugriffe zulässt. Die neueren Browser verwenden dieses Verfahren, wenn eine https-Verbindung angefordert wird und das Tunneling über HTTP aktiv ist.

Standardmäßig sind nur der https-Port (443) und der snews-Port (563) erlaubt. Mit der AllowCONNECT-Direktive können diese Standardeinstellungen überschrieben und Verbindungen über die aufgeführten Ports ermöglicht werden.

Für den Einsatz des CONNECT-Protokolls muss vorab das Modul mod_proxy_connect geladen werden.

ProxyBlock Wörter, Hosts oder Domänen werden für den Zugriff gesperrt. ProxyBlock *|Wort|Host|Domäne [Wort|Host|Domäne] ... server configvirtual host

Die ProxyBlock-Direktive gibt eine durch Leerzeichen getrennte Liste mit Wörtern, Hosts und/oder Domänen an. Anfragen nach HTTP-, HTTPS- und FTP-Dokumenten von Sites, deren Namen mit den angegebenen Wörtern, Hosts oder Domänen übereinstimmen, werden vom Proxy-Server gesperrt. Das Proxy-Modul versucht darüber hinaus, die IP-Adressen von Listenelementen, bei denen es sich um Hostnamen handeln kann, beim Start zu ermitteln und legt diese für spätere Vergleiche im Cache ab. Dadurch kann die für das Hochfahren des Servers benötigte Zeit zunehmen.

Beispiel ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu

rocky.wotsamattau.edu würde auch über die IP-Adresse erfasst.

wotsamattau wäre ausreichend, um wotsamattau.edu zu sperren.

Die Angabe

ProxyBlock *

sperrt den Zugriff auf alle Sites.

ProxyReceiveBufferSize Netzwerkpuffergröße für HTTP- und FTP-Verbindungen ProxyReceiveBufferSize Byte ProxyReceiveBufferSize 0 server configvirtual host

Die ProxyReceiveBufferSize-Direktive gibt eine explizite Netzwerkpuffergröße (TCP/IP) für beschleunigte HTTP- und FTP-Verbindungen an. Die Größe muss über 512 Byte liegen oder auf 0 gesetzt werden, damit die Voreinstellung des Systems übernommen wird.

Beispiel ProxyReceiveBufferSize 2048
ProxyIOBufferSize Gibt die Größe für einen internen Puffer an. ProxyIOBufferSize Byte ProxyIOBufferSize 8192 server configvirtual host

Die ProxyIOBufferSize-Direktive legt die Größe eines internen Puffers für die Datenein- und Ausgabe fest. Er muss kleiner oder gleich 8192 Byte sein.

In der Regel gibt es keinen Grund, diesen Wert zu ändern.

ProxyMaxForwards Maximale Anzahl der Proxies, über die eine Anfrage weitergeleitet werden kann. ProxyMaxForwards Anzahl ProxyMaxForwards 10 server configvirtual host Ab Apache 2.0

Die ProxyMaxForwards-Direktive gibt die maximale Anzahl der Proxies an, über die eine Anfrage weitergeleitet werden kann, wenn die Anfrage keinen Max-Forwards-Header enthält. Auf diese Weise sollen endlose Proxy-Schleifen oder Denial-of-Service-Angriffe verhindert werden.

Beispiel ProxyMaxForwards 15
NoProxy Hosts, Domänen oder Netzwerke, die direkt angesprochen werden. NoProxy Host [Host] ... server configvirtual host

Diese Direktive ist für Proxy-Server in Intranets gedacht. Die NoProxy-Direktive führt eine durch Leerzeichen getrennte Liste von Subnets, IP-Adressen, Hosts und/oder Domänen auf. Anfragen, die mit einem oder mehreren der Listenelemente übereinstimmen, werden direkt bedient und nicht an den oder die eingerichteten ProxyRemote Proxy-Server weitergereicht.

Beispiel ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21

Folgende Host-Argumente können der Direktive NoProxy übergeben werden:

Domäne

Eine Domäne ist ein partiell qualifizierter DNS-Domänenname mit einem Punkt als erstem Zeichen. Er steht für eine Reihe von Hosts, die logisch zur gleichen DNS-Domäne oder Zone gehören (deren Namen auf Domäne enden).

Beispiele .com .apache.org.

Um Domänen von Hostnamen zu unterscheiden (sowohl syntaktisch als auch semantisch, denn eine DNS-Domäne kann auch einen Klasse A-Teil besitzen!) zu können, wird den Domänennamen immer ein Punkt vorangestellt.

Hinweis

Bei Vergleichen von Domänennamen wird Groß- und Kleinschreibung nicht unterschieden. Außerdem wird grundsätzlich davon ausgegangen, dass Domänen immer in der Root des DNS-Baums verankert sind, weshalb die beiden Domänen .MyDomain.com und .mydomain.com. (beachten Sie den nachgestellten Punkt) als identisch betrachtet werden. Da beim Vergleich von Domänennamen keine DNS-Suche durchgeführt wird, ist er wesentlich effektiver als ein Subnet-Vergleich.

SubNet

Ein SubNet ist eine partiell qualifizierte Internet-Adresse in nummerischer Form (in Vierergruppen), auf die optional ein Schrägstrich und die Netzmaske folgt, die als Anzahl der signifikanten Bits angegeben wird. Sie steht für ein Host-Subnet, das über eine Netzwerkschnittstelle erreicht werden kann. Wird keine Netzmaske angegeben, dann wird davon ausgegangen, dass weggelassene Ziffern oder nachgestellte Nullen die Maske angeben. (In diesem Fall kann die Netzmaske nur ein Vielfaches von 8 Bit sein.) Beispiele:

192.168 oder 192.168.0.0
Das Subnet 192.168.0.0 mit einer impliziten Netzmaske aus 16 Bits (auch als 255.255.0.0 angegeben).
192.168.112.0/21
Das Subnet 192.168.112.0/21 mit einer Netzmaske aus 21 Bits (auch als 255.255.248.0 angegeben).

Etwas abwegig ist ein SubNet mit 32 Bits, das einer IPAdresse entspricht, während ein SubNet mit null Bits (0.0.0.0/0) der Konstanten _Default_ für eine beliebige IP-Adresse entspricht.

IPAdresse

Eine IP-Adresse ist eine vollständig qualifizierte Internet-Adresse in numerischer Form (in Vierergruppen). Normalerweise steht diese Adresse für einen Host, es muss aber nicht unbedingt ein DNS-Domänenname dahinterstehen.

Beispiel 192.168.123.7 Hinweis

Eine IP-Adresse muss nicht vom DNS-System aufgelöst werden, was die Leistung steigern kann.

Hostname

Ein Hostname ist ein vollständig qualifizierter DNS-Domänenname, der vom DNS-System in eine oder mehrere IP-Adressen aufgelöst werden kann. Er steht im Gegensatz zur Domäne für einen logischen Host und muss sich mindestens in eine IP-Adresse umwandeln lassen (meist ergibt sich eine Host-Liste mit unterschiedlichen IP-Adressen).

Beispiele prep.ai.mit.edu
www.apache.org
Hinweis

In vielen Situationen ist es effektiver, eine IP-Adresse anstelle eines Hostnamens anzugeben, weil so eine DNS-Suche vermieden wird. Die Namensauflösung kann beim Apache viel Zeit in Anspruch nehmen, wenn eine langesame PPP-Verbindung zum Name-Server benutzt wird.

Die Groß- und Kleinschreibung spielt beim Vergleich von Hostnamen keine Rolle. Außerdem wird immer davon ausgegangen, dass der Hostname in der Root des DNS-Baums verankert ist. Zwei Hosts mit den Bezeichnungen WWW.MyDomain.com und www.mydomain.com. (beachten Sie den nachgestellten Punkt) werden daher als identisch betrachtet.

Apache und DNS
ProxyTimeout Zeitlimit für Proxy-Anfragen ProxyTimeout Sekunden ProxyTimeout 300 server configvirtual host Ab Apache 2.0.31

Mit dieser Direktive wird ein Zeitlimit für Proxy-Anfragen angegeben. Das kann bei einem nicht korrekt arbeitende oder langsamen Servern sinnvoll sein, wenn der Benutzer nicht "endlos" auf den Server warten soll.

ProxyDomain Vorgegebener Domänenname für Proxy-Anfragen ProxyDomain Domäne server configvirtual host

Diese Direktive ist nur bei Apache Proxy-Servern innerhalb eines Intranets sinnvoll. Sie gibt die Domäne an, der der Proxy-Server standardmäßig angehört. Erfolgt eine Anfrage für einen Host ohne Angabe eines Domänennamens, wird mit der angehängten Domäne eine Umleitung an den gleichen Host durchgeführt.

Beispiel ProxyRemote * http://firewall.mycompany.com:81
NoProxy .mycompany.com 192.168.112.0/21
ProxyDomain .mycompany.com
ProxyVia Informationen für Proxy-Anfragen im Via-Antwort-Header (HTTP/1.1). ProxyVia On|Off|Full|Block ProxyVia Off server configvirtual host

Diese Direktive steuert die Verwendung des Via:-Headers (HTTP/1.1) durch den Proxy. Er soll den Fluss von Proxy-Anfragen über eine Kette von Proxy-Servern steuern. Mehr hierzu finden Sie im RFC 2616 (HTTP/1.1), Abschnitt 14.45.

  • Bei der Standardeinstellung Off wird keine besondere Verarbeitung durchgeführt. Enthält eine Anfrage oder Antwort einen Via:-Header, wird dieser unverändert weitergereicht.
  • Wird die Option On gesetzt, erhält jede Anfrage und Antwort eine Via:-Header-Zeile für den aktuellen Host.
  • Bei der Einstellung Full enthält jede erzeugte Via:-Header-Zeile außerdem die Apache-Serverversion im Via:-Kommentarfeld.
  • Bei der Angabe von Block werden alle Via:-Header-Zeilen aus einer Proxy-Anfrage entfernt kein neuer Via:-Header erzeugt.
ProxyErrorOverride Fehlermeldungen werden vom Proxy überschrieben. ProxyErrorOverride On|Off ProxyErrorOverride Off server configvirtual host Ab Apache 2.0

Diese Direktive ist nützlich, wenn bei Reverse-Proxies ein einheitliches Erscheinungsbild für Fehlermeldungen angestrebt wird. Über die SSIs von mod_include kann die SSI-Fehlermeldung anstelle der standardmäßig angezeigten Fehlermeldung des Proxy angezeigt werden, wenn diese Option aktiviert wird.