¿Cómo excluir una URL para Apache Mod_proxy?

23

Tenemos dos servidores Apache como front-end y 4 servidores tomcat como back-end configurados usando el módulo mod_proxy como balanceador de carga. Ahora, queremos excluir una única URL de Tomcat del equilibrador de carga mod_proxy. ¿Hay alguna forma o regla para excluir?

Configuración del equilibrador de 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
fuente

Respuestas:

39

Excluye las rutas de mod_proxy con un signo de exclamación (!) Antes de su declaración completa de ProxyPass, que falta en su muestra: se vería algo así ProxyPass /path balancer://backend-cluster1. Por lo tanto, para excluir una ruta, agregue:

ProxyPass /my/excluded/path !

antes de

ProxyPass /my balancer://backend-cluster1
Alastair McCormack
fuente
Pero la url para tener acceso detrás del proxyBalancer
Mughil
Gracias fuzzyfelt, estoy preguntando cómo excluir la url si configuramos el equilibrador proxy. He incluido la configuración de proxy en la pregunta
Mughil
1
Ver respuesta actualizada. Agregue una exclusión antes de definir qué ruta va a proxypass.
Alastair McCormack
2
El uso de esta respuesta funcionó muy bien para permitir que LetsEncrypt ingrese a la ubicación de carpeta predeterminada bien conocida para un host virtual, cuando se usa ProxyPass para mostrar un servidor de chat allí. Agregue antes de las otras directivas: ProxyPass /.well-known!
Profesor Falken
2

Además de la respuesta de Alastair McCormack: si usa <Location>, debe poner la excepción a continuación en lugar de antes:

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

<Location /my/excluded/path/>
    ProxyPass !
</Location>
cuadro
fuente
-2

Podrías reescribir las directivas de proxy que darán a los usuarios un error 404 cuando intenten acceder a la url que deseas excluir. Deberá habilitar rewrite_module.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>
Pablo
fuente
No dijo nada sobre querer un error 404.
user207421