Zum Inhalt springen
GProxy
Registrierung
Гайды 2 Min. Lesezeit 33 Aufrufe

Apache als Reverse-Proxy

Meistern Sie Apache mod_proxy zur Einrichtung eines Reverse-Proxys. Dieser Leitfaden behandelt wesentliche Konfiguration, Lastverteilung und bewähr

Apache als Reverse-Proxy

Apache kann als Reverse-Proxy fungieren, der Client-Anfragen an Backend-Server weiterleitet und deren Antworten zurückgibt, indem er das Modul mod_proxy und seine zugehörigen Untermodule nutzt.

Ein Reverse-Proxy fungiert als Vermittler für Client-Anfragen und leitet diese an einen oder mehrere interne Backend-Server weiter. Er präsentiert eine einheitliche Schnittstelle zum Internet, während er die interne Netzwerkarchitektur verbirgt. Zu den Vorteilen gehören verbesserte Sicherheit, Lastausgleich, SSL/TLS-Terminierung, Caching und vereinfachte Backend-Verwaltung.

mod_proxy aktivieren

Um Apache als Reverse-Proxy zu konfigurieren, müssen das Kernmodul mod_proxy und spezifische Untermodule aktiviert werden. Diese Module bieten unterschiedliche Protokollunterstützung und Funktionen.

Wesentliche Module:

  • mod_proxy: Das Kern-Proxy-Modul.
  • mod_proxy_http: Zum Proxying von HTTP- und HTTPS-Verkehr.
  • mod_proxy_balancer: Erforderlich für den Lastausgleich über mehrere Backend-Server.
  • mod_proxy_wstunnel: Für WebSocket-Proxying.
  • mod_ssl: Wenn Apache die SSL/TLS-Terminierung für Client-Verbindungen übernehmen soll.

Aktivieren Sie Module mit dem Befehl a2enmod auf Debian/Ubuntu-basierten Systemen oder indem Sie LoadModule-Direktiven in httpd.conf auf CentOS/RHEL-basierten Systemen auskommentieren:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod proxy_wstunnel
sudo a2enmod ssl
sudo systemctl restart apache2

Grundlegende HTTP-Reverse-Proxy-Konfiguration

Die grundlegenden Direktiven für einen Reverse-Proxy sind ProxyPass und ProxyPassReverse. Die Konfiguration wird typischerweise innerhalb eines <VirtualHost>-Blocks oder direkt in httpd.conf platziert.

<VirtualHost *:80>
    ServerName yourdomain.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Require all granted
    </Proxy>

    # Proxy all requests for /app to a backend server
    ProxyPass /app http://backend-app-server:8080/app
    ProxyPassReverse /app http://backend-app-server:8080/app

    # Proxy all requests for the root path / to another backend
    ProxyPass / http://backend-web-server:8000/
    ProxyPassReverse / http://backend-web-server:8000/

    # For SSL/TLS termination at Apache, and forwarding HTTP to backend
    # RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

Wichtige Direktiven

  • ProxyRequests Off: Dies ist entscheidend. Es deaktiviert die Forward-Proxy-Funktionen von Apache und verhindert, dass er als offener Proxy fungiert, was ein erhebliches Sicherheitsrisiko darstellt. Für einen Reverse-Proxy sollte diese Direktive immer auf Off gesetzt sein.
  • ProxyPreserveHost On: Diese Direktive stellt sicher, dass der ursprüngliche Host-Header der Client-Anfrage an den Backend-Server weitergegeben wird. Wenn Off, wird der Host-Header auf den Hostnamen und Port des Backend-Servers gesetzt.
  • ProxyPass [path] [url]: Ordnet einen lokalen URL-Pfad (path) einer Backend-URL (url) zu. Apache fängt Anfragen ab, die path entsprechen, und leitet sie an url weiter.
    • Beispiel: ProxyPass /app http://backend-app-server:8080/app bedeutet, dass eine Anfrage an http://yourdomain.com/app/page.html an http://backend-app-server:8080/app/page.html weitergeleitet wird.
  • ProxyPassReverse [path] [url]: Schreibt Location-, Content-Location- und URI-Header in HTTP-Antworten vom Backend-Server um. Dies stellt sicher, dass Weiterleitungen oder Links, die vom Backend generiert werden, auf die öffentlich zugängliche Proxy-URL zurückverweisen, wodurch verhindert wird, dass Clients internen URLs ausgesetzt werden.
  • <Proxy *>: Definiert die Zugriffskontrolle für den Proxy selbst. Require all granted erlaubt allen Clients die Nutzung des Proxys. Für eine strengere Sicherheit können spezifische IP-Adressen oder Netzwerke zugelassen werden.

Erweiterte mod_proxy-Funktionen

Lastausgleich

mod_proxy_balancer ermöglicht die Verteilung eingehender Anfragen auf mehrere Backend-Server, wodurch Verfügbarkeit und Skalierbarkeit verbessert werden.

<VirtualHost *:80>
    ServerName app.yourdomain.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy balancer://mycluster>
        BalancerMember http://backend1.internal:8080 route=1 loadfactor=10
        BalancerMember http://backend2.internal:8080 route=2 loadfactor=10
        # Optional: ProxySet for specific balancer settings
        ProxySet lbmethod=byrequests stickysession=JSESSIONID nofailover=Off
        # For session stickiness, the backend must set a cookie like JSESSIONID
    </Proxy>

    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/

    <Location "/balancer-manager">
        SetHandler balancer-manager
        Require ip 192.168.1.0/24 # Restrict access to internal network
    </Location>
</VirtualHost>

BalancerMember-Attribute

| Attribut | Beschreibung

Aktualisiert: 04.03.2026
Zurück zur Kategorie

Testen Sie unsere Proxys

20.000+ Proxys in über 100 Ländern weltweit

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.