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.
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
shellBringen Sie anschließend die installierten Pakete auf Ihrem System auf den neuesten Stand:
$ sudo aptitude upgrade -y
shellSchritt 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
shellSchritt 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
shellSchritt 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
shellBei 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
shellSie 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
shellEinige 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
shellWir 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>
shellDrü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>
shellSchritt 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>
shellSchritt 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
shellNun sollte der Apache Reverse-Proxy Anfragen an Ihre Backend-Server weiterleiten.
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.