Wie schließe ich eine URL für Apache Mod_proxy aus?


23

Wir haben zwei Apache-Server als Front-End und 4 Tomcat-Server als Back-End mit mod_proxy-Modul als Load Balancer konfiguriert. Jetzt möchten wir eine einzelne Tomcat-URL vom mod_proxy-Load-Balancer ausschließen. Gibt es eine Möglichkeit oder Regel zum Ausschließen?

Proxy-Balancer-Einstellung:

<Proxy balancer://backend-cluster1>
   BalancerMember http://10.0.0.1:8080 loadfactor=1 route=test1 retry=10
   BalancerMember http://10.0.0.2:8080 loadfactor=1 route=test2 retry=10
</Proxy>

Antworten:


38

Sie schließen Pfade von mod_proxy mit einem Ausrufezeichen (!) Vor Ihrer vollständigen ProxyPass-Anweisung aus, die in Ihrem Beispiel fehlt ProxyPass /path balancer://backend-cluster1. Fügen Sie daher Folgendes hinzu, um einen Pfad auszuschließen:

ProxyPass /my/excluded/path !

Vor

ProxyPass /my balancer://backend-cluster1

Aber die URL, um Zugriff hinter dem ProxyBalancer zu haben
Mughil

Vielen Dank, fuzzyfelt. Ich frage Sie, wie Sie die URL ausschließen können, wenn wir den Proxy-Balancer konfiguriert haben. Ich habe die Proxy-Konfiguration in die Frage aufgenommen
Mughil

1
Siehe aktualisierte Antwort. Fügen Sie einen Ausschluss hinzu, bevor Sie den Pfad zum Proxypass definieren.
Alastair McCormack

2
Die Verwendung dieser Antwort hat sich hervorragend bewährt, um LetsEncrypt als Standardverzeichnis für bekannte Ordner für einen virtuellen Host zuzulassen, wenn ProxyPass verwendet wird, um dort einen Chat-Server anzuzeigen. Fügen Sie vor den anderen Anweisungen hinzu: ProxyPass /.well-known!
Professor Falken

2

Zusätzlich zur Antwort von Alastair McCormack: Wenn Sie verwenden <Location>, müssen Sie die folgende Ausnahme anstelle der vorherigen einfügen :

<Location /my/>
    ProxyPass balancer://backend-cluster1
</Location>

<Location /my/excluded/path/>
    ProxyPass !
</Location>

-2

Sie können über die Proxy-Direktiven eine Umschreibung setzen, die den Benutzern einen 404-Fehler anzeigt, wenn sie versuchen, auf die URL zuzugreifen, die Sie ausschließen möchten. Sie müssen rewrite_module aktivieren.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>

Er sagte nichts darüber, dass er einen 404-Fehler haben wollte.
user207421
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.