Jak wykluczyć adres URL dla Apache Mod_proxy?

23

Mamy dwa serwery Apache jako front-end i serwer 4 tomcat jako back-end skonfigurowany przy użyciu modułu mod_proxy jako modułu równoważenia obciążenia. Teraz chcemy wykluczyć pojedynczy adres URL tomcat z modułu równoważenia obciążenia mod_proxy. Czy istnieje jakiś sposób lub reguła, aby wykluczyć?

Ustawienie Balansera proxy:

<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>
Mughil
źródło

Odpowiedzi:

39

Wykluczasz ścieżki z mod_proxy ze znakiem wykrzyknika (!) Przed pełną instrukcją ProxyPass, której brakuje w twojej próbce - wyglądałoby to tak ProxyPass /path balancer://backend-cluster1. Dlatego, aby wykluczyć ścieżkę, dodaj:

ProxyPass /my/excluded/path !

przed

ProxyPass /my balancer://backend-cluster1
Alastair McCormack
źródło
Ale adres URL, aby mieć dostęp za proxyBalancer
Mughil
Dzięki fuzzyfelt, pytam, jak wykluczyć adres URL, jeśli skonfigurowaliśmy moduł równoważenia proxy. W pytaniu
zawarłem
1
Zobacz zaktualizowaną odpowiedź. Dodaj wykluczenie przed określeniem ścieżki do proxy.
Alastair McCormack
2
Użycie tej odpowiedzi sprawdziło się świetnie, umożliwiając LetsEncrypt do domyślnej lokalizacji folderu .well dla hosta wirtualnego, gdy używasz ProxyPass do pokazania tam serwera czatu. Dodaj przed innymi dyrektywami: ProxyPass /.well-known!
Profesor Falken,
2

Oprócz odpowiedzi Alastaira McCormacka: Jeśli używasz <Location>, musisz umieścić wyjątek poniżej zamiast wcześniej:

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

<Location /my/excluded/path/>
    ProxyPass !
</Location>
rama
źródło
-2

Możesz umieścić przepisanie nad dyrektywami proxy, które dadzą użytkownikom błąd 404 podczas próby uzyskania dostępu do adresu URL, który chcesz wykluczyć. Musisz włączyć rewrite_module.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>
Pablo
źródło
Nie powiedział nic o chęci błędu 404.
user207421