这是突出我的情况的一个简单的例子:
ProxyPass /google/ http://www.google.com/ ProxyPassReverse /google/ http://www.google.com/ <VirtualHost 127.0.0.1:82> ProxyPass /google/ http://www.yahoo.com/ ProxyPassReverse /google/ http://www.yahoo.com/ </VirtualHost>
在这种情况下,请求“ http://127.0.0.1:82/google/ ”将尝试访问http://www.google.com
我还发现,在主要定义的ProxyPass将优先于虚拟主机中可用的实际目录 – 例如,如果在上面而不是具有ProxyPass规则的VirtualHost其DocumentRoot包含名为“谷歌”的目录代理将仍然有效。
根据apache文档,我被引导相信任何“主要”定义将被能够满足请求的VirtualHost覆盖。
不幸的是,你是对的。 我不知道这是否正确,但是您可以通过将默认代理选项包括到[VirtualHost 默认 ]部分( http://httpd.apache.org/docs/2.0/vhosts/examples.html#default ) 喜欢这个:
<VirtualHost _default_:80> ServerName noneset DocumentRoot /dev/null ProxyPass /google/ http://www.google.com/ ProxyPassReverse /google/ http://www.google.com/ <VirtualHost> <VirtualHost *:80> ServerName myhost DocumentRoot /var/www ProxyPass /google/ http://www.yahoo.com/ ProxyPassReverse /google/ http://www.yahoo.com/ </VirtualHost> <Proxy *> Order deny,allow Allow from all </Proxy>