Назад | Перейти на главную страницу

Как исключить URL-адрес для Apache Mod_proxy?

У нас есть два сервера 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>