buecher.lingoworld.de
sascha kersken

buecher.lingoworld - Startseite

    buchinfo

    aktuelles

    newsletter

    inhalt

    leseprobe

    rezensionen

    direktiven

    module

    errata

    forum

    buchtipps

    links



    bestellen bei:

    Galileo Press
    amazon.de





Module
 
Galileo Computing 
Energy Brain Comics

mod_proxy

Referenz der mod_proxy-Direktiven

Ein Proxy-Server ist ein Stellvertreter, der im Namen von Clients mit anderen Servern interagiert. Der Vorgang ist völlig transparent: Die Clients können die gewünschten Operationen durchführen, als wären sie tatsächlich mit dem Zielserver verbunden; der Server wiederum kommuniziert nur mit dem Proxy und weiß nichts über den Client, für den der Proxy die Anfrage weiterleitet. Es gibt zwei grundlegende Arten von Proxies:

  • Ein Forward-Proxy wird vom Client aktiv kontaktiert, um für diesen Anfragen an einen anderen Server zu senden. Der Proxy nimmt anschließend die Antwort des Servers entgegen und leitet sie an den Client weiter. Gegenüber dem Server agiert der Proxy dabei ebenfalls als Client, erzeugt also eigene Anfragen.
  • Ein Reverse-Proxy ist im Gegensatz dazu ein Server, der hinter den Kulissen Anfragen an andere Server stellt und sie an den Client weiterreicht, ohne dass dieser von deren Existenz erfährt. Auf diese Weise können Sie die Inhalte anderer Websites unter URLs Ihres eigenen Servers anbieten. Der Zweck dieser Übung ist allerdings in der Regel kein böswilliger Content-Diebstahl. Vielmehr bildet dieses Konzept beispielsweise die Grundlage einiger Load-Balancing-Lösungen oder ermöglicht das Veröffentlichen von Inhalten, die sich eigentlich hinter einer Firewall befinden.

Proxies sind übrigens keineswegs auf HTTP beschränkt. Es gibt Proxy-Server für fast jedes wichtige TCP/IP-Anwendungsprotokoll wie FTP, E-Mail (SMTP, POP3 und IMAP), NNTP oder IRC. Daneben stellen die so genannten SOCKS-Proxies eine Weiterleitung beliebiger TCP-Verbindungen zur Verfügung. Apache kann zurzeit als Proxy für HTTP, FTP und sichere SSL-Verbindungen (über CONNECT-Anfragen) eingsetzt werden.

Proxy-Server haben im Wesentlichen drei Hauptaufgaben:

  • Sie ermöglichen den (indirekten) Zugriff auf Netzwerkdienste, die der Client eigentlich nicht erreichen kann – beispielsweise, weil er sich hinter einer Firewall befindet oder weil der Internet-Provider formal nur Verbindungen für einen einzelnen Rechner zulässt. Zu diesem Zweck werden Proxies sehr häufig in Firmen eingesetzt.
  • Da keine direkte Verbindung zwischen Client und Server besteht, kann der Proxy bei Bedarf beliebige Filter- und Kontrollfunktionen ausführen. Diese Nutzung von Proxies ist oft zweifelhaft; sie wird von einigen autoritären Regierungen als Mittel der Zensur und Kontrolle eingesetzt . Auch manche Internet-Provider stehen in dem Ruf, durch Zwangsproxies den Zugriff auf das Internet einzuschränken.[1]
  • Ein Proxy-Server kann mit einem Cache kombiniert werden, um einmal abgerufene Inhalte für andere Clients vorzuhalten und auf diese Weise den Netzwerk-Traffic zu reduzieren.

Bei Apache 2 stellt das Modul mod_proxy die grundlegende Proxy-Funktionalität bereit; für die tatsächliche Vermittlung bestimmter Protokolle verwendet es jedoch Hilfsmodule. Mit Apache werden zurzeit die drei Module mod_proxy_http (HTTP-Proxy), mod_proxy_ftp (FTP-Proxy) sowie mod_proxy_connect (HTTPS-Tunnel-Proxy) geliefert. Das Konzept macht es leicht, Proxy-Lösungen für andere Protokolle zu entwickeln; in künftigen Apache-Versionen werden diese wahrscheinlich verfügbar sein.

Wenn Sie Proxy-Funktionalität für ein größeres Unternehmensnetzwerk benötigen, sollten Sie übrigens besser ein auf diese Aufgabe spezialisiertes Produkt wie squid verwenden; die Apache-Proxy-Module funktionieren zwar recht gut, sind aber nicht ganz so leistungsfähig.

Proxy-Grundkonfiguration

Als ersten Anhaltspunkt finden Sie hier zwei einfache, aber vollständige Proxy-Konfigurationen – die erste für einen Forward-Proxy, die zweite für einen Reverse-Proxy.

Beachten Sie, dass es sehr wichtig ist, einen Proxy-Server vor unberechtigten Zugriffen zu schützen. Schließlich könnte ansonsten jeder Ihren Proxy verwenden, um auf beliebige Internet-Inhalte zuzugreifen! In aller Regel werden Proxy-Zugriffe deshalb auf das lokale Netzwerk beschränkt; Authentifizierung ist ebenfalls möglich und kann in den meisten Browsern, die den entsprechenden Proxy ansprechen, automatisiert werden.

Zunächst einmal müssen Sie die Module für die konkrete Proxy-Funktionalität aktivieren: mod_proxy muss für jede Art von Proxy-Betrieb aktiv sein; daneben können Sie eines oder mehrere der folgenden Module aktivieren:

  • mod_proxy_http: Proxy für HTTP/0.9, HTTP/1.0 und HTTP/1.1
  • mod_proxy_ftp: Proxy für das File Transfer Protocol (FTP)
  • mod_proxy_connect: Proxy für getunnelte SSL-Verbindungen über CONNECT-Anfragen.

Beachten Sie, dass keines der drei Hilfsmodule eigene Direktiven definiert; die Konfiguration ist allein Sache von mod_proxy. In dieser Grundanleitung wird zunächst einmal nur die Einrichtung eines HTTP-Proxys vorgestellt; Einzelheiten für die anderen Protokolle entnehmen Sie bitte der zugehörigen Direktivenreferenz.

Mit folgenden Anweisungen machen Sie Apache zum Forward-Proxy für HTTP-Anfragen, der aus Sicherheitsgründen auf das lokale Netzwerk beschränkt ist (die IP-Adressen müssen Sie gegebenenfalls an Ihr eigenes Netzwerk anpassen):

   # Module laden - nur bei DSO-Betrieb:
   LoadModule proxy_module modules/mod_proxy.so
   LoadModule proxy_http_module modules/mod_proxy.so

   # Proxy einschalten
   ProxyRequests On
   ProxyVia On

   # Konfiguration für Proxy-Anfragen
   <Proxy *>
     Order deny,allow
     Deny from all
     Allow from 192.168.0 127.0.0.1
   </Proxy>

Mit dieser Einstellung werden Proxy-Anfragen über den Standard-TCP-Port abgewickelt, an dem Apache lauscht. Damit wird allerdings jede Anfrage als Proxy-Anfrage betrachtet, so dass Sie den entsprechenden Apache-Server nicht mehr als gewöhnlichen Webserver benutzen können. Falls das auf einem bestimmten Host Ihr Wunsch war, ist es in Ordnung. In allen anderen Fällen sollten Sie einen zusätzlichen Port konfigurieren und einen virtuellen Host als HTTP-Proxy einrichten. Die folgende Variante verarbeitet Proxy-Anfragen nur auf Port 3128, der auch von reinen Proxy-Cache-Produkten wie squid verwendet wird:

   # Module laden - nur bei DSO-Betrieb:
   LoadModule proxy_module modules/mod_proxy.so
   LoadModule proxy_http_module modules/mod_proxy.so

   # Zusätzlicher Port für Proxy-Anfragen
   Listen 3128

   # Virtueller Host für Proxy-Port 3128
   <VirtualHost _default_:3128>
     # Proxy einschalten
     ProxyRequests On
     ProxyVia On

     # Konfiguration für Proxy-Anfragen
     <Proxy *>
       Order deny,allow
       Deny from all
       Allow from 192.168.0 127.0.0.1
     </Proxy>

   </VirtualHost>

In den Browsern Ihres lokalen Netzwerkes können Sie nun den neuen Proxy aktivieren; dies funktioniert je nach Browser unterschiedlich und sprengt den Rahmen dieser Anleitung.

Das nächste kleine Beispiel zeigt die Reverse-Proxy-Funktionalität; es speist Anfragen für den URL-Pfad /sales aus der URL http://sales.mynet.de. Die zweite Direktive korrigiert die URL in HTTP-Redirect-Headern:

   ProxyPass /sales http://sales.mynet.de
   ProxyPassReverse /sales http://sales.mynet.de

Für Reverse-Proxy-Funktionen brauchen Sie ProxyRequests nicht zu aktivieren, und Sie benötigen auch keinen virtuellen Host und keinen <Proxy>-Container. Schließlich soll das Einbinden der externen Ressource in der Regel für alle Anfragen gelten. Wenn Sie eine feinere Kontrolle über Reverse-Proxy-Operationen benötigen, können Sie die entsprechenden Funktionen von mod_rewrite verwenden (Einstieg z.B. unter RewriteRule).

Rechtlicher Hinweis

Dieser Text ist ein Auszug aus dem Buch "Apache 2" von Sascha Kersken (Bonn 2004, Galileo Computing). Ohne ausdrückliche Genehmigung von Autor und Verlag darf er weder insgesamt noch in Teilen auf anderen Websites oder in sonstigen Medien veröffentlicht werden. Links auf diese Seite sind dagegen gestattet und ausdrücklich erwünscht.


Fußnote

[1] Dazu muss man nicht unbedingt nach China oder in den Iran blicken – hierzulande hat beispielsweise der Regierungspräsident von Düsseldorf Provider aufgefordert, gewisse Websites für ihre Kunden zu sperren. Zwar ging es dabei vor allem um rechtsradikale Sites, um die es gewiss nicht schade ist, aber dennoch bleibt im Hinblick auf Artikel 5 GG die Frage, ob ein nicht einmal demokratisch legitimierter Verwaltungsbeamter Zensur üben darf wie einst die »Fürsten von Gottes Gnaden«. [Zurück]



nach oben
Zur Übersicht
No Software Patents!

Ihre Werbung hier?
    
    www.lingoworld.de
    webmaster@lingoworld.de
    © Copyright 2004-2007 by Lingoworld IT Services, Köln
    designed by Tülay Kersken
    Impressum