Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Ein Apache Webserver kann durch wenige Zeilen zusätzlicher Konfiguration als Proxy vor einem anderen Webserver dienen. Das kann man sich z.B. bei Serverumzügen zunutze machen. Solange die neue Server-IP zu einer Domain noch nicht durch das DNS an alle Clients verteilt wurde, kann man die Besucher einfach am alten Server abfangen und den Server anweisen, die Webseiten aber vom neuen Server abzuholen und sie den Besuchern dann zu präsentieren. Der alte Webserver gibt die Dokumente dann nicht mehr direkt an den Besucher aus, sondern ist nur noch die Vermittlungsstelle zwischen dem Benutzer und dem neuen Server.

Für die Proxyfunktionen werden zwei Apache Proxymodule aktiviert:

sudo a2enmod proxy proxy_http

Wenn SSL verwendet werden soll, darf natürlich auch das ssl Modul nicht fehlen.

Ein einfacher Reverse Proxy

Ein einfacher Reverse Proxy sieht z.B. so aus:

<VirtualHost *:80>
    ServerName domain.tld
    ServerAlias www.domain.tld

    ProxyPass / http://new.domain.tld/
    ProxyPassReverse / http://new.domain.tld/
</VirtualHost>

Die entscheidende Rolle spielen dabei natürlich die beiden Direktiven „ProxyPass“ und „ProxyPassReverse“, durch die Anfragen an new.domain.tld weitergereicht werden. Von dort wird die Antwort außerdem wieder entgegengenommen und an den Besucher gesendet.

Ähnlich sieht die Konfiguration aus, wenn ein VirtualHost mit SSL-Unterstützung verwendet wird und die Verbindung zum Besucher verschlüsselt stattfinden soll. Eine Standard-SSL-Konfiguration wäre hier noch einzufügen und der Port auf Port 443 zu ändern. (siehe auch unten)

Die Proxy-Variante mit SSL zum Zielserver

Etwas anders sieht es aus, wenn zum Zielserver (also der Adresse nach den ProxyPass Anweisungen) ebenfalls SSL verwendet werden soll. Würde man statt „http“ einfach „https“ schreiben, gäbe es beim Aufruf der Seite einen Fehler 500. Die Anfrage könnte nicht beantwortet werden. Damit auch zum Zielserver verschlüsselt werden kann, muss eine zusätzliche Direktive „SSLProxyEngine“ auf „On“ gesetzt werden. Erst dann kann auch die Verbindung zum (neuen?) Zielserver verschlüsselt stattfinden

<VirtualHost *:443>
    ServerName domain.tld
    ServerAlias www.domain.tld
    
    SSLProxyEngine On
    ProxyPass / https://new.domain.tld/
    ProxyPassReverse / https://new.domain.tld/

    SSLEngine on
    SSLCertificateFile /etc/myssl/public.pem
    SSLCertificateKeyFile /etc/myssl/privkey.pem
    SSLCertificateChainFile /etc/myssl/chain-class2.pem
</VirtualHost>

In der obigen Beispielkonfiguration wäre der Datenverkehr sowohl zwischen Besucher und Proxy als auch zwischen Proxy und Zielserver verschlüsselt.


Post published on 23. Mai 2014 | Last updated on 23. Mai 2014
Tags:               

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

7 thoughts on “Apache Reverse Proxy (auch mit SSL Support zum Zielserver) einrichten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.