- Veröffentlicht am
- • How2-Tipps
Apache als Reverse Proxy einrichten
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
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.