Apache 2.4 - Unterverzeichnis auf anderen Server umleiten mit mod_proxy
Problem : Wenn man mehrere Anwendungen hat die nur über Port 80 kommunizieren, aber alle über eine Leitung verfügbar sein müssen, kann man dies mit dem Apache Modul mod_proxy realisieren. Dieses Modul fungiert als proxy und leitet eine Anfrage intern an einen anderen Server um.
Wenn man sich diese schematische Zeichnung anschaut sieht man besser was gemeint ist.
Lösung :
Diese Anleitung wurde unter Debian Jessie erstellt. Bei anderen Linux-Distributionen sollte das vorgehen ähnlich sein.
Zum Anfang stellen wir sicher das alle Module installiert sind die wir benötigen, das können wir mit dem folgenden Befehl bewirken.
Dazu geben wir den Befehl
Nun müssen wir uns um die Weiterleitung kümmern. Diese erledigen wir in der Konfiguration der virtual Host auf dem Apache.
Ich verwende hier die Default Konfiguration für die Anleitung.
Quellen :
apache.org - Doku - proxypass
apache.org - Doku - proxypassmatch
apache.org - Doku - proxypassreverse
apache.org - Doku - proxyhtmlurlmap
apache ProxyPass: how to preserve original IP address
Wenn man sich diese schematische Zeichnung anschaut sieht man besser was gemeint ist.
rot = physische Netzwerkverbindung
Lösung :
Diese Anleitung wurde unter Debian Jessie erstellt. Bei anderen Linux-Distributionen sollte das vorgehen ähnlich sein.
Zum Anfang stellen wir sicher das alle Module installiert sind die wir benötigen, das können wir mit dem folgenden Befehl bewirken.
apache2ctl -Mim output sollten dann diese Einträge vorhanden sein :
..... proxy_module (shared) proxy_html_module (shared) proxy_http_module (shared) ..... remoteip_module (shared) xml2enc_module (shared)vermutlich sind diese Einträge nicht vorhanden wenn es sich um ein frisch installiertes System handelt. Dann müssen wir die Library nachinstallieren.
Dazu geben wir den Befehl
apt-get install libapache2-mod-proxy-htmlein. Dann aktivieren wir die Module mit
a2enmod proxy proxy_html proxy_http xml2enc remoteipnach einem Neustart des Apache Servers stehen diese Module zur Verfügung
service apache2 restart
Nun müssen wir uns um die Weiterleitung kümmern. Diese erledigen wir in der Konfiguration der virtual Host auf dem Apache.
Ich verwende hier die Default Konfiguration für die Anleitung.
nano /etc/apache2/sites-available/000-default.conföffnet den Editor dort fügen wir nun unsere Umleitung ein.
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html RemoteIPHeader X-Forwarded-For # Weiterleiten auf site1.int.test ProxyPass /site1/ http://site1.int.test/ ProxyPassMatch ^/site1/(.*) http://apache.proxy.ext.test/site1/$1 ProxyPassReverse /site1/ http://site1.int.test/ ProxyHTMLURLMap http://site1.int.test /site1/ # Weiterleiten auf site2.int.test ProxyPass /site2/ http://site2.int.test/ ProxyPassMatch ^/site2/(.*) http://apache.proxy.ext.test/site2/$1 ProxyPassReverse /site2/ http://site2.int.test/ ProxyHTMLURLMap http://site2.int.test /site2/ # LogFiles ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>Nachdem wir die Datei gespeichert haben überprüfen wir die Konfiguration mit dem Befehl
apache2ctl configtestlautet der Output
Syntax OKhaben wir alles richtig gemacht. Jetzt starten wir noch den Apache Server durch damit die Konfiguration aktiv wird.
service apache2 restart
Quellen :
apache.org - Doku - proxypass
apache.org - Doku - proxypassmatch
apache.org - Doku - proxypassreverse
apache.org - Doku - proxyhtmlurlmap
apache ProxyPass: how to preserve original IP address