Durch die Im­ple­men­tie­rung eines Reverse-Proxys als zu­sätz­li­che Schutz­schicht können Sie die Ro­bust­heit Ihrer Web­an­wen­dung ver­bes­sern und das Risiko von Angriffen mi­ni­mie­ren. Der Apache HTTP Server verfügt über viele Module und Er­wei­te­run­gen, die ver­schie­de­ne Proxy-Funk­tio­nen un­ter­stüt­zen. In unserer Anleitung erklären wir Ihnen Schritt für Schritt, wie Sie einen Apache Reverse-Proxy aufsetzen und kon­fi­gu­rie­ren können.

Was ist mod_proxy?

Apache ist ein bekannter und weit ver­brei­te­ter Open-Source-Webserver, der für die Be­reit­stel­lung von Web­in­hal­ten im Internet verwendet wird. Er ist auf vielen Be­triebs­sys­te­men wie Windows, Linux und macOS verfügbar und kann über Plugins und Module flexibel erweitert werden.

Das mod_proxy-Modul er­mög­licht es dem Apache-Webserver, als Reverse-Proxy zu fungieren, indem es Anfragen an einen anderen Server wei­ter­lei­tet und die Antwort an den Client zu­rück­gibt. Dies ist nützlich, wenn Sie bei­spiels­wei­se mehrere Webserver haben und die Last zwischen ihnen verteilen möchten. Dadurch können Sie die Leistung ver­bes­sern oder eine Hoch­ver­füg­bar­keits­ar­chi­tek­tur aufbauen.

Apache mod_proxy besteht aus mehreren Modulen, die alle ihre eigenen Funk­tio­na­li­tä­ten aufweisen. Hier sind einige der wich­tigs­ten Module:

  • mod_proxy: Stellt die Kern­funk­tio­na­li­tät des Reverse-Proxys bereit und leitet Anfragen an einen anderen Server weiter.
  • mod_proxy_http: Bietet Proxy-Funk­tio­nen für HTTP- und HTTPS-Pro­to­kol­le.
  • mod_proxy_ftp: Besitzt Proxy-Funk­tio­nen für das FTP-Protokoll.
  • mod_proxy_connect: für SSL-ver­schlüs­sel­te Ver­bin­dun­gen
  • mod_proxy_ajp: Dient der Wei­ter­lei­tung von Anfragen an AJP-fähige An­wen­dungs­ser­ver.
  • mod_proxy_wstunnel: für die Nutzung von Web-Sockets
  • mod_proxy_balancer: Bietet Load-Balancing-Funk­tio­nen.
  • mod_cache: Un­ter­stützt ver­schie­de­ne Cache-Methoden.
  • mod_headers: zur Mo­di­fi­ka­ti­on von HTTP-Header-Zeilen
  • mod_deflate: Kom­pri­miert HTTP-Antworten.
Tipp

Linux Hosting von IONOS un­ter­stützt eine Vielzahl an Apache-Modulen, mit denen Sie schnell und effektiv Ihren eigenen Apache Reverse-Proxy kon­fi­gu­rie­ren können. Pro­fi­tie­ren Sie zudem von flexibel ska­lier­ba­rer Per­for­mance, DDOS-Schutz und Top-PHP-Features.

Einen Apache Reverse-Proxy aufsetzen: Schritt-für-Schritt-Anleitung

Dieses Tutorial setzt voraus, dass Sie Apache bereits auf Ihrem System in­stal­liert haben. Aus­führ­li­che In­for­ma­tio­nen, wie Sie einen Apache Webserver ein­rich­ten können, finden Sie in unserem Ratgeber.

Schritt 1: Den Paket-Index ak­tua­li­sie­ren

Zuerst sollten Sie die Liste der ver­füg­ba­ren Pakete ak­tua­li­sie­ren.

Geben Sie folgenden Befehl in ein Terminal ein:

$ sudo aptitude update
shell

Bringen Sie an­schlie­ßend die in­stal­lier­ten Pakete auf Ihrem System auf den neuesten Stand:

$ sudo aptitude upgrade -y
shell

Schritt 2: Essential Build Tools her­un­ter­la­den

Als Nächstes in­stal­lie­ren wir die Essential Build Tools. Hierbei handelt es sich um eine Gruppe von Werk­zeu­gen und Bi­blio­the­ken, die zur Er­stel­lung und Kom­pi­lie­rung von An­wen­dun­gen auf Linux benötigt werden.

$ sudo aptitude install -y build-essential
shell

Schritt 3: Module und Ab­hän­gig­kei­ten in­stal­lie­ren

Nun können wir die für den Apache Reverse-Proxy be­nö­tig­ten Module und Bi­blio­the­ken her­un­ter­la­den und in­stal­lie­ren.

$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev
shell

Schritt 4: Module ak­ti­vie­ren

Bevor Sie die Er­wei­te­run­gen ak­ti­vie­ren, sollten Sie über­prü­fen, dass sie korrekt in­stal­liert wurden. Das folgende Kommando zeigt Ihnen eine Liste der ver­füg­ba­ren Module an:

$ a2enmod
shell
Bild: Ausführen von a2enmod
a2enmod-Befehl im Terminal

Bei der Aus­füh­rung des Befehls a2enmod werden Sie gefragt, welche Module Sie in­stal­lie­ren möchten. Sie können die ge­wünsch­ten Er­wei­te­run­gen in einem Einzeiler auflisten:

$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
shell

Sie können auch jedes Modul einzeln ak­ti­vie­ren:

$ a2enmod proxy
$ a2enmod proxy_http
$ a2enmod proxy_ajp
$ a2enmod rewrite
$ a2enmod deflate
$ a2enmod headers
$ a2enmod proxy_balancer
$ a2enmod proxy_connect
$ a2enmod proxy_html
shell

Einige Module sind stan­dard­mä­ßig aktiv. Mit a2enmod stellen Sie sicher, dass sie wirklich frei­ge­schal­tet sind.

Schritt 5: Die Stan­dard­kon­fi­gu­ra­ti­on ändern

Um die Proxy-Funk­tio­nen des Apache Web­ser­vers zu im­ple­men­tie­ren, müssen wir die Stan­dard­kon­fi­gu­ra­ti­ons­da­tei 000-default.conf im Ver­zeich­nis /etc/apache2/sites-enabled be­ar­bei­ten.

$ nano /etc/apache2/sites-enabled/000-default.conf
shell

Wir richten einen vir­tu­el­len Proxy-Host mit den Er­wei­te­run­gen mod_vir­tu­al­host und mod_proxy ein. Sie können den Code nach Ihren Be­dürf­nis­sen anpassen.

<VirtualHost *:*>
        ProxyPreserveHost On
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0/
        ProxyPassReverse / http://0.0.0.0/
        ServerName localhost
    </VirtualHost>
shell

Drücken Sie Ctrl + X und Y, um die Än­de­run­gen zu speichern und den Text-Editor zu schließen.

Schritt 6: Load-Balancing kon­fi­gu­rie­ren

Wenn Sie mehrere Backend-Server betreiben, ist es emp­feh­lens­wert, die Last mittels Load-Balancing zu verteilen.

Sie können hierfür folgenden Code als Vorlage nehmen und in die Stan­dard­kon­fi­gu­ra­ti­ons­da­tei einfügen:

<Proxy balancer://mycluster>
        # Define back-end servers:
        # Server 1
        BalancerMember http://0.0.0.0/
        # Server 2
        BalancerMember http://0.0.0.0/
    </Proxy>
    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load
        ProxyPass / balancer://mycluster
    </VirtualHost>
shell

Schritt 7: SSL-Un­ter­stüt­zung ein­rich­ten

Wenn Sie Apache SSL für ver­schlüs­sel­te Ver­bin­dun­gen und Zer­ti­fi­ka­te verwenden möchten, müssen Sie einen zweiten vir­tu­el­len Host ak­ti­vie­ren.

Listen 443
    NameVirtualHost *:443
    <VirtualHost *:443>
        SSLEngine On
        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0/
        ProxyPassReverse / http://0.0.0.0/
        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name
    </VirtualHost>
shell

Schritt 8: Apache neu starten

Sobald Sie mit der Kon­fi­gu­ra­ti­on fertig sind, sollten Sie den Apache-Webserver neu starten, damit die Än­de­run­gen an­ge­wen­det werden.

$ service apache2 restart
shell

Nun sollte der Apache Reverse-Proxy Anfragen an Ihre Backend-Server wei­ter­lei­ten.

Zum Hauptmenü