Title: Achtung
Rufen Sie die Direktive
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
Über andere Module stehen außerdem erweiterte Eigenschaften
zur Verfügung. Das
Caching ermöglichen SSLProxy*-Direktiven des
Moduls
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
Der Proxy wird mit der
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 [P]-Flag für die
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
ProxyVia On
<Proxy *>
Deny from all
Allow from internal.example.com
<Proxy *>
Allow from all
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
Der Zugriff auf einen Proxy kann mit einem
Deny from all
Allow from 192.168.0
Weitere Informationen zu Direktiven für die Zugriffskontrolle finden Sie
unter
Beim Einsatz eines einfachen Proxy ist die Zugriffskontrolle
(über die ProxyRequests Off), ist die Zugriffskontrolle weniger
problematisch, weil die Clients nur auf speziell konfigurierte Hosts
zugreifen können.
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 xxx
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.
Bei Verwendung der
Ein in einem Intranet gelegener Apache Proxy-Server muss externe
Anfragen über den Firewall weiterreichen (die
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
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:
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
Direktiven in
Im folgenden Beispiel haben nur Hosts aus dem Bereich
yournetwork.example.com über den Proxy Zugriff auf
die Inhalte des Servers:
Deny from all
Allow from yournetwork.example.com
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:
Die
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.
Die
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.
Erlaubt oder verhindert die Funktion des Apache als einfacher
Proxy-Server. (Wird ProxyRequests auf Off gesetzt,
dann wird dadurch die
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
Aktivieren Sie die Proxy-Funktion erst dann mit der Direktive
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:
Schema gibt gibt das für die Kommunikation mit dem
Server im Netzwerk zu verwendende Protokoll an. Dieses Modul
unterstützt auschließlich http.
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.
Die
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
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 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.
Die Reihenfolge der Anweisungen muss beachtet werden. Die Ausnahmen müssen vor der allgemeinen Anweisung stehen.
Innerhalb eines
Weitere Möglichkeiten zur Reverse-Proxy-Konfiguration bietet die
[P]-Flag.
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
Besitzt beispielsweise der lokale Server die Adresse
http://example.com/, dann sorgen die Direktiven
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
Diese RewriteRule ... [P]) des Moduls
Innerhalb eines
CONNECT-Verbindung
über den Proxy hergestellt werden kann.Die 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
Für den Einsatz des CONNECT-Protokolls
muss vorab das Modul
Die
rocky.wotsamattau.edu würde auch über die
IP-Adresse erfasst.
wotsamattau wäre ausreichend, um
wotsamattau.edu zu sperren.
Die Angabe
sperrt den Zugriff auf alle Sites.
Die 512 Byte liegen oder auf 0 gesetzt werden,
damit die Voreinstellung des Systems übernommen wird.
Die 8192 Byte sein.
In der Regel gibt es keinen Grund, diesen Wert zu ändern.
Die Max-Forwards-Header
enthält. Auf diese Weise sollen endlose Proxy-Schleifen oder
Denial-of-Service-Angriffe verhindert werden.
Diese Direktive ist für Proxy-Server in Intranets gedacht. Die
NoProxy .mycompany.com 192.168.112.0/21
Folgende Host-Argumente können der Direktive
- 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.comund.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.168oder192.168.0.0- Das Subnet 192.168.0.0 mit einer impliziten Netzmaske aus 16 Bits
(auch als
255.255.0.0angegeben). 192.168.112.0/21- Das Subnet
192.168.112.0/21mit 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.7Hinweis 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.orgHinweis 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.comundwww.mydomain.com.(beachten Sie den nachgestellten Punkt) werden daher als identisch betrachtet.
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.
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.
NoProxy .mycompany.com 192.168.112.0/21
ProxyDomain .mycompany.com
Via-Antwort-Header (HTTP/1.1).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
Offwird keine besondere Verarbeitung durchgeführt. Enthält eine Anfrage oder Antwort einenVia:-Header, wird dieser unverändert weitergereicht. - Wird die Option
Ongesetzt, erhält jede Anfrage und Antwort eineVia:-Header-Zeile für den aktuellen Host. - Bei der Einstellung
Fullenthält jede erzeugteVia:-Header-Zeile außerdem die Apache-Serverversion imVia:-Kommentarfeld. - Bei der Angabe von
Blockwerden alleVia:-Header-Zeilen aus einer Proxy-Anfrage entfernt kein neuerVia:-Header erzeugt.
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.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
