open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Apache als Reverse Proxy einrichten

Autor
Apache als Reverse Proxy einrichten

Anfragen an Backend-Systeme weiterleiten – sicher, performant und flexibel

Der Apache HTTP Server ist weit mehr als nur ein klassischer Webserver zum Ausliefern von HTML-Dateien. Dank seiner modularen Architektur kann er auch als Reverse Proxy eingesetzt werden – also als Vermittler zwischen Clients (z. B. Browsern) und internen Backend-Systemen wie Node.js, Docker-Containern oder APIs.

Damit lässt sich eine stabile, sichere und skalierbare Serverarchitektur aufbauen, ohne die internen Dienste direkt im Internet sichtbar zu machen.

Was ist ein Reverse Proxy?

Ein Reverse Proxy ist ein Server, der Anfragen von außen entgegennimmt und sie an interne Server weiterleitet. Der Benutzer bekommt davon nichts mit – für ihn sieht es so aus, als käme die Antwort direkt vom Proxy-Server.

Vorteile:

  • Sicherheit: Interne Systeme bleiben verborgen
  • Zentrale Kontrolle: SSL, Caching, Authentifizierung zentral verwalten
  • Lastverteilung: Anfragen an mehrere Backends verteilen
  • Flexibilität: Kombinierte Nutzung von z. B. Apache + Node.js + PHP

Kurz gesagt:

Der Reverse Proxy ist die „Firewall“ und „Verteilerzentrale“ für deinen Web-Traffic.

Voraussetzungen

Bevor du loslegst:

  • Apache muss installiert sein
  • Module mod_proxy und mod_proxy_http müssen aktiviert sein
  • Zugriff auf die Apache-Konfigurationsdateien (z. B. /etc/apache2/sites-available/)

Module aktivieren

Aktiviere die benötigten Module mit:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers
sudo systemctl restart apache2

Optional für HTTPS-Backends:

sudo a2enmod proxy_ssl

Beispiel 1: Reverse Proxy für ein Node.js-Backend

Du betreibst z. B. eine React- oder Express-App auf Port 3000. Apache läuft auf Port 80 oder 443 – und soll die Anfragen weiterleiten.

Beispielkonfiguration (/etc/apache2/sites-available/app.conf)

<VirtualHost *:80>
    ServerName app.example.com

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

    ErrorLog ${APACHE_LOG_DIR}/app_error.log
    CustomLog ${APACHE_LOG_DIR}/app_access.log combined
</VirtualHost>

Dann aktivieren und neu laden:

sudo a2ensite app.conf
sudo systemctl reload apache2

Ergebnis: Apache leitet alle Anfragen von http://app.example.com an das lokale Node.js-Backend weiter.

Beispiel 2: Reverse Proxy zu einem Docker-Container

Du betreibst z. B. ein internes Backend im Docker-Netzwerk unter http://backend:8080.

Beispielkonfiguration:

<VirtualHost *:80>
    ServerName api.example.com

    ProxyPreserveHost On
    ProxyPass / http://backend:8080/
    ProxyPassReverse / http://backend:8080/
</VirtualHost>

Falls du Apache im selben Docker-Netzwerk betreibst, erkennt er den Container-Namen backend direkt als Host.

Beispiel 3: HTTPS aktivieren

Wenn du dein Reverse-Proxy-Setup absichern willst, aktivierst du SSL mit Let’s Encrypt:

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

Danach erweitert Certbot die Konfiguration automatisch um:

<VirtualHost *:443>
    ServerName app.example.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/app.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/app.example.com/privkey.pem

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

Jetzt ist dein Proxy-Setup vollständig verschlüsselt.

Nützliche Erweiterungen

Caching aktivieren (optional)

CacheQuickHandler off
CacheLock on
CacheLockPath /tmp/mod_cache-lock
CacheIgnoreHeaders Set-Cookie
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_cache_disk

So kannst du Antworten zwischenspeichern und die Backend-Last reduzieren.

Header anpassen

RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

Damit wissen Backend-Systeme, dass der ursprüngliche Request per HTTPS kam.

Typische Einsatzszenarien

Szenario Beschreibung
Node.js hinter Apache Apache nimmt Anfragen an Port 80/443 entgegen und leitet an Node.js weiter
Docker Microservices Apache bündelt mehrere Container-APIs unter einer Domain
Interne APIs absichern Externe Zugriffe laufen nur über den Proxy
Load Balancing Apache verteilt Requests auf mehrere Backends

Fehlersuche & Debugging

Fehler 502 / 503

→ Meist ist das Backend nicht erreichbar oder Port falsch. Prüfen mit:

curl http://127.0.0.1:3000

Timeout-Probleme

Standardmäßig wartet Apache 60 Sekunden. Anpassen mit:

ProxyTimeout 120

Logs prüfen

/var/log/apache2/error.log
/var/log/apache2/access.log

Der Apache Reverse Proxy ist ein mächtiges Werkzeug, um moderne Architekturen sicher und effizient zu verbinden. Er agiert als Torwächter deiner Serverlandschaft – nimmt Anfragen entgegen, schützt interne Systeme und sorgt für geordneten Datenfluss.

Ob für Node.js, Docker oder Microservices – Apache bleibt auch in der Cloud-Ära ein zuverlässiger Allrounder.

Kurz gesagt:

Stabil, sicher, skalierbar – der Apache Reverse Proxy ist die Schaltzentrale moderner Webinfrastruktur.