Konfigurieren Sie einen Reverse-Proxy mit Apache unter Ubuntu

Vorstellung des Reverse Proxy

In diesem Tutorial erkläre ich, wie man einen Reverse-Proxy mit Apache unter Ubuntu konfiguriert (Durch Anpassung der Apache-Installationsbefehle kann dieses Tutorial problemlos auf andere Distributionen übertragen werden).

Bevor wir zum technischen Teil kommen, werfen wir eine Bestandsaufnahme der Frage: Was ist ein Reverse-Proxy?

Ein Reverse-Proxy ist ein (Web-)Server, der vor dem Ziel-Webserver platziert wird, auf dem der Webdienst (die Website) gehostet wird.

Wenn Computer einen Webdienst konsultieren, der einen Reverse-Proxy verwendet, greifen sie nicht direkt auf den Server zu, auf dem sich die Anwendung befindet. Die HTTP-Anfrage kommt zuerst beim Reverse-Proxy an, der die Anfrage dann selbst an den Zielserver sendet.

Es handelt sich um das gleiche Prinzip wie bei einem Proxyserver, den wir in Unternehmen finden, um auf das Internet zuzugreifen.

Die Verwendung eines Reverse-Proxys hat mehrere Vorteile:

  • Beim Speichern der IP-Adresse (v4) haben die Websites Website1 und Website2 im Internet dieselbe IP-Adresse, die des Reverse-Proxys.
  • Erhöhen Sie die Sicherheitsstufe (Mod Security, Crowdsec, Fail2ban)
  • Reduzieren Sie die Belastung von Webservern durch Caching und/oder SSL-Offloading
  • HTML-Inhalte neu schreiben
  • Zentralisieren Sie die Verwaltung von SSL-Zertifikaten

Für dieses Tutorial habe ich einen einzelnen Computer mit Ubuntu 22.04 verwendet. Um die Webserver zu simulieren, auf denen die Websites gehostet werden, habe ich Docker verwendet.

Installieren Sie Apache2 auf Ubuntu

Standardmäßig ist Apache2 in den Ubuntu-Repositorys verfügbar. Um von der neuesten Version von Apache aus einer neueren Version von Apache2 zu profitieren, werde ich das ppa:ondrej/apache2-Repository durchgehen.

Die Verwendung des ppa:ondrej/apache2-Repositorys ist nicht zwingend erforderlich.

Fügen Sie das ppa:ondrej/apache2-Repository hinzu:

sudo add-apt-repository ppa:ondrej/apache2

Bestätigen Sie die Hinzufügung der Anzahlung durch Drücken der Eingabetaste.

Die Anzahlung wird hinzugefügt.

Paketliste aktualisieren:

sudo apt update

Installieren Sie Apache2:

sudo apt install apache2 -y

Warten Sie, während Sie Apache2 auf dem Server installieren:

Apache2 ist installiert.

Aktivieren Sie Reverse Proxy auf Apache2

Standardmäßig kann Apache2 nicht als Reverse-Proxy konfiguriert werden, da Apache2 hauptsächlich als Webserver verwendet wird.

Damit Apache2 als Reverse Proxy verwendet werden kann, müssen Sie das Modul „proxy_http“ aktivieren, das sich im Ordner: /etc/apache2/mods-available befindet.

Um die Liste der aktiven Apache2-Module anzuzeigen, können Sie diese anzeigen, indem Sie den Inhalt des Ordners /etc/apache2/mods-enabled auflisten.

Um den Proxy_http-Mod zu aktivieren, geben Sie den folgenden Befehl ein:

sudo a2enmod proxy_http

Durch die Aktivierung des Proxy_http-Mods wurde auch der Proxy-Mod aktiviert.

Um die neuen Module zu berücksichtigen, müssen Sie Apache2 neu starten.

sudo systemctl restart apache2

Wenn wir noch einmal in den Ordner /etc/apache2/mods-enabled schauen, sehen wir die beiden Module Proxy und Proxy_http.

Virtuelle Hosts erstellen und konfigurieren

Die Funktionsweise von Virtualhosts ist identisch, unabhängig davon, ob wir Apache2 als Webserver oder als Reverse-Proxy verwenden. Lediglich die Anweisungen in der Konfigurationsdatei unterscheiden sich.

Die Virtualhosts-Dateien werden zuerst im Ordner /etc/Apache2/sites-available erstellt.

Gehe zum Ordner:

cd /etc/apache2/sites-available

Wir erstellen nun eine Datei für die Konfiguration der Website1-Site:

sudo nano reverse-proxy-website1.conf

Hier ist der Inhalt der Datei:

Die Einstellungen müssen an Ihre Umgebung angepasst werden

Erläuterungen zu Parametern:

EinstellungErläuterung
ServerNameDomänenname, der dem virtuellen Host zugeordnet ist
ProxyPreserveHostOn|Off ermöglicht es Ihnen, den Host-Header beim Übertragen der Anforderung an den Zielserver beizubehalten. Wenn Sie virtuelle Hosts auf dem Ziel-Webserver verwenden, müssen Sie diesen Parameter belassen On.
ProxyRequestsOff Wenn diese Anweisung On übergeben wird, kann Apache2 als Proxy fungieren, um wie Squid ins Internet zu gehen.
Aus Sicherheitsgründen muss es auf „Off“ gesetzt werden, andernfalls ist es möglich, den Apache2-Dienst als Proxy zu verwenden, um eine IP-Adresse zu fälschen.
ProxyPassErmöglicht Ihnen, den Pfad in der URL mit dem Zielserver abzugleichen.
Hier senden wir alle Anfragen / an den Webserver http://127.0.0.1:20001/
ProxyPassReverseIm Allgemeinen finden wir den gleichen Wert wie bei ProxyPass. Dadurch können Sie die URL im HTTP-Header anpassen

Nachdem die Virtualhost-Konfiguration nun abgeschlossen ist, erstellen wir einen symbolischen Link im Ordner /etc/apache2/sites-enabled, um die Konfiguration zu aktivieren.

sudo ln -s /etc/apache2/sites-available/reverse-proxy-website1.conf /etc/apache2/sites-enabled/

Bevor wir die Konfiguration neu laden, testen wir die Konfiguration, um sicherzustellen, dass keine Blockierungsfehler vorliegen:

apachectl configtest

Wenn die Syntax in Ordnung ist, können Sie die Konfiguration neu laden:

sudo systemctl reload apache2

Wir können nun die Konfiguration testen. Bevor Sie einen Test durchführen, stellen Sie sicher, dass die Domäne (URL) auf den Reverse-Proxy und nicht auf den Ziel-Webserver verweist. Nach Abschluss dieser Überprüfung wurde beim Starten eines Browsers die URL des virtuellen Hosts aufgerufen.

Wir können die Passage durch den Apache2-Reverse-Proxy sicherstellen, indem wir uns die Protokolle unter /var/log/apache2/other_vhosts_access.log ansehen

sudo tail -f /var/log/apache2/other_vhosts_access.log

Ich werde nicht ins Detail gehen, sondern nur die Aufnahmen einfügen, aber ich werde das Gleiche für die Website2-Site tun.

In den Protokollen kann ich die Passage durch den Reverse-Proxy validieren.

Zur besseren Lesbarkeit der Protokolle ist es möglich, die Protokolle für jeden virtuellen Host in verschiedene Dateien aufzuteilen.

In der Virtualhost-Konfiguration fügen wir die Parameter LogLevel, ErrorLog und CustomLog hinzu.

Laden Sie die Konfiguration neu, um die Änderungen zu berücksichtigen:

sudo systemctl reload apache2.

Im Ordner /var/log/Apache2 können wir die Dateien sehen:

Die Browsing-Protokolle werden jetzt in der Datei gespeichert, die dem virtuellen Host zugeordnet ist:


Jetzt wissen Sie, wie Sie Apache als Reverse-Proxy konfigurieren, um Ihre Webserver zu schützen.




Schreibe einen Kommentar