我们有两台 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>