如何为Apache Mod_proxy排除URL?


23

我们使用mod_proxy模块作为负载均衡器配置了两个Apache服务器作为前端,并使用4个tomcat服务器作为后端。现在,我们要从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>

Answers:


39

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

ProxyPass /my/excluded/path !

之前

ProxyPass /my balancer://backend-cluster1

但是该URL可以在proxyBalancer后面访问
-Mughil

感谢fuzzyfelt,如果要配置代理平衡器,我想问如何排除URL。我已经在问题中包含了代理配置
Mughil

1
查看最新答案。在定义proxypass的路径之前,请添加一个排除项。
Alastair McCormack 2013年

2
使用ProxyPass在此处显示聊天服务器时,使用此答案非常适合让LetsEncrypt进入虚拟主机的默认.well-known文件夹位置。在其他指令之前添加:ProxyPass /.well-known!
法肯教授

2

除了Alastair McCormack回答:如果使用<Location>,则需要在下面而不是之前添加例外:

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

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

-2

您可以在proxy指令上方进行重写,以在用户尝试访问要排除的URL时给用户404错误。您将需要启用rewrite_module。

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

他没有说要404错误。
user207421 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.