我在 apache 中有一个虚拟主机,它将请求重定向到另一个 Web 服务器。
<VirtualHost *:80>
DocumentRoot /var/www
ServerName another.host
ProxyPass / http://another.host2:8081/
ProxyPassReverse / http://another.host2:8081/
</VirtualHost>
我需要排除此虚拟主机捕获的 URL 模式。基本上,我不希望收到带有以下 URL 的请求:http://another.host:8081/~用户名转发至其他服务器。
这能做到吗?
答案1
是也不是。
不可以,因为您不能排除某些内容与 VirtualHost 的匹配;任何与主机名匹配的内容将始终附加到该 VirtualHost。
是的,您可以获得您想要的行为,通过让您的ProxyPass
行为只发生在您不想本地提供服务的位置。
尝试这样的操作:
<VirtualHost *:80>
DocumentRoot /var/www
ServerName another.host
<Location />
Order deny,allow
Allow from all
</Location>
<LocationMatch "^/[^~]">
ProxyPass / http://another.host2:8081/
ProxyPassReverse / http://another.host2:8081/
</LocationMatch>
</VirtualHost>