我有这样的后端API:
http://192.168.65.203:2022/page/index.jsp
并且在后端运行之前,我将Apache httpd服务器作为第一层。我将端口设置为8090。
现在我想要的图像文件只能从httpd服务器获取,而不能从后端服务器获取。所以我的VirtualHost看起来像这样:
<VirtualHost *:8090>
ProxyPreserveHost On
ProxyRequests off
<Directory "/usr/share/myfile">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
Allow from all
Require all granted
</Directory>
AliasMatch ^/(.*\.gif|.*\.jpg|.*\.jpeg|.*\.png|.*\.css|.*\.swf)$ /usr/share/myfile/$1
ProxyPass / http://192.168.65.203:2022/
ProxyPassReverse / http://192.168.65.203:2022/
问题:图像仍从后端服务器拾取。如果我禁用proxypass和proxypassreserve,它可以正常工作(可以从httpd服务器加载图像)。
期望:我如何控制是否找到图像(按别名规则),它不应该用于proxypass?还是还有其他方法?
答案 0 :(得分:0)
将[1]替换为[2],然后尝试:
[1] :
AliasMatch ^/(.*\.gif|.*\.jpg|.*\.jpeg|.*\.png|.*\.css|.*\.swf)$ /usr/share/myfile/$1
[2] :
ProxyPassMatch ^/(*.gif)$ !
ProxyPassMatch ^/(*.jpg)$ !
ProxyPassMatch ^/(*.jpeg)$ !
ProxyPassMatch ^/(*.png)$ !
ProxyPassMatch ^/(*.css)$ !
ProxyPassMatch ^/(*.swf)$ !
答案 1 :(得分:0)
指令!是必需的。下面是我的问题的解决方案。
<VirtualHost *:8090>
ProxyPreserveHost On
ProxyRequests off
<Directory "/usr/share/myfile">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
Allow from all
Require all granted
</Directory>
DocumentRoot "/usr/share/myfile"
ProxyPassMatch ^/(.*\.gif|.*\.jpg|.*\.jpeg|.*\.png|.*\.css|.*\.swf)$ !
ProxyPass / http://192.168.65.203:2022/
ProxyPassReverse / http://192.168.65.203:2022/
</VirtualHost>
当请求是图像类型时,它将转到本地文件系统“ / usr / share / myfile”和指令!就像停止代理一样。检查here以获得有关该指令的更多详细信息。