Apache Reverse Proxy (http/https)

Manchmal ist es nötig, einen HTTP-Reverse-Proxy einzurichten, um irgendwelche Dienste umzubiegen oder einen nicht HTTPS-fähigen Webserver über eine verschlüsselte Verbindung zu erreichen.

Ich verwende hierfür gerne den Apache, da er sehr flexibel ist und die Realisierung damit relativ einfach geschehen kann.
Dabei ist natürlich die Konfiguration für das unverschlüsselte Web einfacher zu bewerkstelligen als die verschlüsselte Variante, aber nicht viel mehr.

Um einen Linux-Server überhaupt als Reverse-Proxy betreiben zu können, müssen natürlich zuerst einige Vorkehrungen getroffen werden.

Als erstes installieren wir den Apache:

sudo apt-get install apache2

Danach aktivieren wir die Erweiterungen proxy, proxy_http und ggf. ssl:

sudo a2enmod proxy proxy_http ssl

Nun ist der Apache präpariert und die einzelnen Seiten können konfiguriert werden.
Es empfiehlt sich für jede einzelne Seite, die der Proxy „relayen“ soll eine eigene Konfiguration in „sites-available“ zu erstellen und dann mit a2ensite <Seitenname> zu aktivieren.
Soll der Server jedoch nur eine einzige verarbeiten, kann auch der Default „000-default.conf“ verwendet werden.

Um HTTP zu verarbeiten bearbeiten wir die gewünschte Seiten-Konfiguration und fügen folgendes ein:

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

   # /=Welches Unterverzeichnis, http://... soll von wo aus umleiten.
   ProxyPass / http://sub.domain.tld/

   # Analog zu ProxyPass nur hier als Ziel.
   ProxyPassReverse / http://sub.domain.tld/
</VirtualHost>

Bei HTTPS wird es etwas komplizierter, ist aber dennoch leicht verständlich:

<VirtualHost *:443>
   ServerName <domain.tld>
   ServerAlias <www.domain.tld>
 
   SSLProxyEngine On
   # Analog zu oben
   ProxyPass / https://sub.domain.tld/
   # Analog zu oben
   ProxyPassReverse / https://sub.domain.tld/

   # Wenn unbeglaubigtes Zertifikat zwischen Server und Proxy installiert ist:
   SSLProxyVerify none 
   SSLProxyCheckPeerCN off
   SSLProxyCheckPeerName off
   SSLProxyCheckPeerExpire off
   #-----------------

   SSLEngine on
   SSLCertificateFile /etc/apache2/cert/public.pem
   SSLCertificateKeyFile /etc/apache2/cert/privkey.pem
   SSLCertificateChainFile /etc/apache2/cert/ca.pem
</VirtualHost>

Jetzt noch den Apache neustarten und wenn alles stimmt, fungiert er nun als Proxy:

sudo service apache2 restart

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert