У нас есть два сервера Apache в качестве интерфейсных и 4 сервера Tomcat в качестве внутренних, настроенных с использованием модуля mod_proxy в качестве балансировщика нагрузки. Теперь мы хотим исключить один URL-адрес tomcat из балансировщика нагрузки mod_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>
Вы исключаете пути из mod_proxy с восклицательным знаком (!) Перед полным оператором ProxyPass, который отсутствует в вашем примере - это будет выглядеть примерно так ProxyPass /path balancer://backend-cluster1
. Поэтому, чтобы исключить путь, добавьте:
ProxyPass /my/excluded/path !
перед
ProxyPass /my balancer://backend-cluster1
В дополнение к ответу Аластера МакКормака: если вы используете <Location>
, вам нужно поместить исключение ниже, а не раньше:
<Location /my/>
ProxyPass balancer://backend-cluster1
</Location>
<Location /my/excluded/path/>
ProxyPass !
</Location>
Вы можете переписать директивы прокси, которые будут выдавать пользователям ошибку 404 при попытке доступа к URL-адресу, который вы хотите исключить. Вам нужно будет включить rewrite_module.
<Location ~ ^/urltoblock($|/)>
RewriteEngine On
RewriteRule .* - [L,R=404]
</Location>