如何排除 Apache Mod_proxy 的 URL?

如何排除 Apache Mod_proxy 的 URL?

我们有两台 Apache 服务器作为前端,4 台 tomcat 服务器作为后端,使用 mod_proxy 模块配置为负载平衡器。现在,我们想从 mod_proxy 负载平衡器中排除单个 tomcat url。有什么方法或规则可以排除吗?

代理平衡器设置:

<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>

答案1

您在完整的 ProxyPass 语句之前使用感叹号 (!) 从 mod_proxy 中排除路径,而您的示例缺少该语句 - 它看起来像ProxyPass /path balancer://backend-cluster1。因此,要排除路径,请添加:

ProxyPass /my/excluded/path !

ProxyPass /my balancer://backend-cluster1

答案2

除了Alastair McCormack的回答:如果您使用<Location>,您需要将异常放在下面而不是之前:

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

<Location /my/excluded/path/>
    ProxyPass !
</Location>

答案3

您可以在代理指令上方放置一个重写,这样当用户尝试访问您想要排除的 URL 时,将出现 404 错误。您需要启用 rewrite_module。

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>

相关内容