Como excluir um URL para o Apache Mod_proxy?

23

Temos dois servidores Apache como front-end e 4 tomcat como back-end configurados usando o módulo mod_proxy como balanceador de carga. Agora, queremos excluir um único URL do tomcat do balanceador de carga mod_proxy. Existe alguma maneira ou regra para excluir?

Configuração do 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
fonte

Respostas:

38

Você exclui caminhos do mod_proxy com um ponto de exclamação (!) Antes da sua declaração ProxyPass completa, que está faltando na sua amostra - Seria algo parecido ProxyPass /path balancer://backend-cluster1. Portanto, para excluir um caminho, adicione:

ProxyPass /my/excluded/path !

antes

ProxyPass /my balancer://backend-cluster1
Alastair McCormack
fonte
Mas a url para ter acesso atrás do proxyBalancer
Mughil
Obrigado fuzzyfelt, estou perguntando como excluir o URL se configuramos o balanceador de proxy. Eu incluí a configuração do proxy na questão
Mughil
1
Veja a resposta atualizada. Adicione uma exclusão antes de definir qual caminho para proxypass.
Alastair McCormack
2
O uso dessa resposta funcionou muito bem para permitir LetsEncrypt no local padrão da pasta .well conhecida de um host virtual, ao usar o ProxyPass para mostrar um servidor de bate-papo. Adicione antes das outras diretivas: ProxyPass /.well-known!
Professor Falken
2

Além da resposta do Alastair McCormack: Se você usar <Location>, precisará colocar a exceção abaixo, em vez de antes:

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

<Location /my/excluded/path/>
    ProxyPass !
</Location>
quadro, Armação
fonte
-2

Você pode colocar uma reescrita acima das diretivas de proxy que fornecerão aos usuários um erro 404 quando tentarem acessar o URL que você deseja excluir. Você precisará habilitar rewrite_module.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>
Pablo
fonte
Ele não disse nada sobre querer um erro 404.
precisa saber é o seguinte