Apache Reverse-Proxy – Einrichtung mit dem mod_proxy-Modul

Durch die Implementierung eines Reverse-Proxys als zusätzliche Schutzschicht können Sie die Robustheit Ihrer Webanwendung verbessern und das Risiko von Angriffen minimieren. Der Apache HTTP Server verfügt über viele Module und Erweiterungen, die verschiedene Proxy-Funktionen unterstützen. In unserer Anleitung erklären wir Ihnen Schritt für Schritt, wie Sie einen Apache Reverse-Proxy aufsetzen und konfigurieren können.

Was ist mod_proxy?

Apache ist ein bekannter und weit verbreiteter Open-Source-Webserver, der für die Bereitstellung von Webinhalten im Internet verwendet wird. Er ist auf vielen Betriebssystemen wie Windows, Linux und macOS verfügbar und kann über Plugins und Module flexibel erweitert werden.

Das mod_proxy-Modul ermöglicht es dem Apache-Webserver, als Reverse-Proxy zu fungieren, indem es Anfragen an einen anderen Server weiterleitet und die Antwort an den Client zurückgibt. Dies ist nützlich, wenn Sie beispielsweise mehrere Webserver haben und die Last zwischen ihnen verteilen möchten. Dadurch können Sie die Leistung verbessern oder eine Hochverfügbarkeitsarchitektur aufbauen.

Apache mod_proxy besteht aus mehreren Modulen, die alle ihre eigenen Funktionalitäten aufweisen. Hier sind einige der wichtigsten Module:

  • mod_proxy: Stellt die Kernfunktionalität des Reverse-Proxys bereit und leitet Anfragen an einen anderen Server weiter.
  • mod_proxy_http: Bietet Proxy-Funktionen für HTTP- und HTTPS-Protokolle.
  • mod_proxy_ftp: Besitzt Proxy-Funktionen für das FTP-Protokoll.
  • mod_proxy_connect: für SSL-verschlüsselte Verbindungen
  • mod_proxy_ajp: Dient der Weiterleitung von Anfragen an AJP-fähige Anwendungsserver.
  • mod_proxy_wstunnel: für die Nutzung von Web-Sockets
  • mod_proxy_balancer: Bietet Load-Balancing-Funktionen.
  • mod_cache: Unterstützt verschiedene Cache-Methoden.
  • mod_headers: zur Modifikation von HTTP-Header-Zeilen
  • mod_deflate: Komprimiert HTTP-Antworten.
Tipp

Linux Hosting von IONOS unterstützt eine Vielzahl an Apache-Modulen, mit denen Sie schnell und effektiv Ihren eigenen Apache Reverse-Proxy konfigurieren können. Profitieren Sie zudem von flexibel skalierbarer Performance, 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 installiert haben. Ausführliche Informationen, wie Sie einen Apache Webserver einrichten können, finden Sie in unserem Ratgeber.

Schritt 1: Den Paket-Index aktualisieren

Zuerst sollten Sie die Liste der verfügbaren Pakete aktualisieren.

Geben Sie folgenden Befehl in ein Terminal ein:

$ sudo aptitude update
shell

Bringen Sie anschließend die installierten Pakete auf Ihrem System auf den neuesten Stand:

$ sudo aptitude upgrade -y
shell

Schritt 2: Essential Build Tools herunterladen

Als Nächstes installieren wir die Essential Build Tools. Hierbei handelt es sich um eine Gruppe von Werkzeugen und Bibliotheken, die zur Erstellung und Kompilierung von Anwendungen auf Linux benötigt werden.

$ sudo aptitude install -y build-essential
shell

Schritt 3: Module und Abhängigkeiten installieren

Nun können wir die für den Apache Reverse-Proxy benötigten Module und Bibliotheken herunterladen und installieren.

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

Schritt 4: Module aktivieren

Bevor Sie die Erweiterungen aktivieren, sollten Sie überprüfen, dass sie korrekt installiert wurden. Das folgende Kommando zeigt Ihnen eine Liste der verfügbaren Module an:

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

Bei der Ausführung des Befehls a2enmod werden Sie gefragt, welche Module Sie installieren möchten. Sie können die gewünschten Erweiterungen 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 aktivieren:

$ 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 standardmäßig aktiv. Mit a2enmod stellen Sie sicher, dass sie wirklich freigeschaltet sind.

Schritt 5: Die Standardkonfiguration ändern

Um die Proxy-Funktionen des Apache Webservers zu implementieren, müssen wir die Standardkonfigurationsdatei 000-default.conf im Verzeichnis /etc/apache2/sites-enabled bearbeiten.

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

Wir richten einen virtuellen Proxy-Host mit den Erweiterungen mod_virtualhost und mod_proxy ein. Sie können den Code nach Ihren Bedürfnissen 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:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        ServerName localhost
    </VirtualHost>
shell

Drücken Sie Ctrl + X und Y, um die Änderungen zu speichern und den Text-Editor zu schließen.

Schritt 6: Load-Balancing konfigurieren

Wenn Sie mehrere Backend-Server betreiben, ist es empfehlenswert, die Last mittels Load-Balancing zu verteilen.

Sie können hierfür folgenden Code als Vorlage nehmen und in die Standardkonfigurationsdatei einfügen:

<Proxy balancer://mycluster>
        # Define back-end servers:
        # Server 1
        BalancerMember http://0.0.0.0:8080/
        # Server 2
        BalancerMember http://0.0.0.0:8081/
    </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-Unterstützung einrichten

Wenn Sie Apache SSL für verschlüsselte Verbindungen und Zertifikate verwenden möchten, müssen Sie einen zweiten virtuellen Host aktivieren.

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:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name
    </VirtualHost>
shell

Schritt 8: Apache neu starten

Sobald Sie mit der Konfiguration fertig sind, sollten Sie den Apache-Webserver neu starten, damit die Änderungen angewendet werden.

$ service apache2 restart
shell

Nun sollte der Apache Reverse-Proxy Anfragen an Ihre Backend-Server weiterleiten.

Tipp

Ein Managed Server von IONOS bietet Ihnen eine einfache, skalierbare und sichere Lösung für die Einrichtung eines Apache Reverse-Proxys. Mit hoher Verfügbarkeit und Flexibilität sowie professionellem Support können Sie sich auf Ihr Kerngeschäft konzentrieren, während IONOS sich um die Leistung und Sicherheit Ihrer Anwendung kümmert.