禁用子目录的 mod_proxy(apache)

禁用子目录的 mod_proxy(apache)

我有一个用于反向代理的文件夹:

<VirtualHost *:80>
 ...
 ProxyPass /site http://server.local:8989/site
 ProxyPassReverse /site http://server.local:8989/site
</VirtualHost *:80>

如何禁用 URL /site/IMAGES/* 的代理?

答案1

添加首先ProxyPass

ProxyPass /site/IMAGES/ !

查看mod_proxy 文档了解详细信息。

答案2

当你问这个问题的时候它还不可用,但是如果你使用的是 Apache HTTPD 2.4 或更高版本,那么如文档中所述您可以使用两个位置块来实现:

<VirtualHost *:80>
  ...
  <Location /site>
    ProxyPass        http://server.local:8989/site
    ProxyPassReverse http://server.local:8989/site
  </Location>
  <Location /site/IMAGES>
    ProxyPass "!"
  </Location>
</VirtualHost>

位置块按顺序解释,因此您需要将无代理块放在代理块之后。或者,如果您想将代理指令保留在 vhost 级别,fission 给出的答案就可以了!

答案3

这对我的情况来说还不够。ProxyPass
/site/IMAGES/!
我想排除一些路径而不仅仅是一个,我在线搜索并且都在谈论 t=something 这样的,
ProxyPass /site/IMAGES/!
这只在您只想排除一条路径时才有效,效果很好!但我想排除一些路径而不仅仅是一个,所以我尝试这样做,
ProxyPass /site/IMAGES/!
ProxyPass /site-web/!
也不起作用,一次只绕过一条路径是有效的。所以谢谢 Gagravarr,我可以使用 Apache 的 Location 来做我需要的事情,并且我可以使用 ProxyPass 排除一些路径,
<Location "/admin"> ProxyPass "!" </Location> <Location "/mail"> ProxyPass "!" </Location> <Location "/html"> ProxyPass "!" </Location> <Location "/shared"> ProxyPass "!" </Location> ProxyPreserveHost On ProxyPass / http://193.168.1.3/ ProxyPassReverse / http://192.168.1.3/
我认为这可能会对处于我的情况的人有所帮助。

相关内容