我有一个用于反向代理的文件夹:
<VirtualHost *:80>
...
ProxyPass /site http://server.local:8989/site
ProxyPassReverse /site http://server.local:8989/site
</VirtualHost *:80>
如何禁用 URL /site/IMAGES/* 的代理?
答案1
答案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/
我认为这可能会对处于我的情况的人有所帮助。