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

23

У нас есть два сервера Apache в качестве внешнего и 4 сервера Tomcat в качестве внутреннего, настроенных с использованием модуля mod_proxy в качестве балансировщика нагрузки. Теперь мы хотим исключить один URL-адрес tomcat из балансировщика нагрузки mod_proxy. Есть ли способ или правило, чтобы исключить?

Настройка Proxy Balancer:

<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
источник

Ответы:

39

Вы исключаете пути из mod_proxy с восклицательным знаком (!) Перед полным оператором ProxyPass, который отсутствует в вашем образце - это будет выглядеть примерно так ProxyPass /path balancer://backend-cluster1. Поэтому, чтобы исключить путь, добавьте:

ProxyPass /my/excluded/path !

до

ProxyPass /my balancer://backend-cluster1
Аластер МакКормак
источник
Но URL, чтобы иметь доступ за прокси-балансером
Mughil
Спасибо fuzzyfelt, я спрашиваю, как исключить URL, если мы настроили прокси-балансировщик. Я включил конфигурацию прокси в вопросе
Mughil
1
Смотрите обновленный ответ. Добавьте исключение, прежде чем определить, какой путь к прокси-серверу.
Аластер МакКормак
2
Использование этого ответа отлично работало, позволяя LetsEncrypt в хорошо известное по умолчанию местоположение папки для виртуального хоста, когда ProxyPass отображал там сервер чата. Добавьте перед другими директивами: ProxyPass / .well-known!
Профессор Фалькен
2

В дополнение к ответу Alastair McCormack: если вы используете <Location>, вам нужно поставить исключение ниже, чем перед:

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

<Location /my/excluded/path/>
    ProxyPass !
</Location>
Рамка
источник
-2

Вы можете поместить перезапись над директивами прокси, что даст пользователям ошибку 404, когда они попытаются получить доступ к URL, который вы хотите исключить. Вам нужно будет включить rewrite_module.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>
Pablo
источник
Он ничего не сказал о желании ошибки 404.
user207421