新手求救:apache配置反向代理

新手求救:apache配置反向代理

各路高手,我是apache新手,现有一个反向代理的配置问题求教各位,烦请各位帮忙,小弟感激不尽!

场景如下:
    我想让apache作为2个应用的反向代理,2个应用的访问地址分别是http://xy.wis.com.cn:8080/和http://shz.wis.com.cn:8080/,apache所在机器的域名是a.wis.com.cn。
    我想实现访问http://a.wis.com.cn:8080/xy/即访问http://xy.wis.com.cn:8080,访问http://a.wis.com.cn:8080/shz/即访问http://shz.wis.com.cn:8080/。

    我在httpd.conf配置文件的最后加上如下语句:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

NameVirtualHost a.wis.com.cn:8080

<VirtualHost "a.wis.com.cn:8080">
ServerAdmin root@wis.com.cn
ServerName a.wis.com.cn
UseCanonicalName Off
ProxyPass /xy/ http://xy.wis.com.cn:8080/
ProxyPassReverse /xy/ http://xy.wis.com.cn:8080/
</VirtualHost>

<VirtualHost "a.wis.com.cn:8080">
ServerAdmin root@wis.com.cn
ServerName a.wis.com.cn
UseCanonicalName Off
ProxyPass /shz/ http://shz.wis.com.cn:8080/
ProxyPassReverse /shz/ http://shz.wis.com.cn:8080/
</VirtualHost>

这样配置的结果是:
我访问第一个应用:http://a.wis.com.cn:8080/xy/,可以顺利得到http://xy.wis.com.cn:8080的页面。但是我访问第二个应用时:http://a.wis.com.cn:8080/shz/,就无法得到预期的http://shz.wis.com.cn:8080/的页面,而是得到这样的404错误:The requested URL /shz/was not found on this server.

更奇怪的是,我把两个代理的配置颠倒后,还是发现第一个应用可以代理成功,第二个应用代理不成功!
也就是说,始终只能是第一个应用代理成功!
请各路高手帮我诊断诊断,看小弟哪里配错了。
谢谢!
第一个主机头都匹配了,就不找第二个了.

你要的主机名一样,只是该主机明下面映射的虚拟目录不同,干嘛写两个Vhost呢?

你把两个写在一起试试!

<VirtualHost "a.wis.com.cn:8080">
ServerAdmin root@wis.com.cn
ServerName a.wis.com.cn
UseCanonicalName Off
ProxyPass /xy/ http://xy.wis.com.cn:8080/
ProxyPassReverse /xy/ http://xy.wis.com.cn:8080/
ProxyPass /shz/ http://shz.wis.com.cn:8080/
ProxyPassReverse /shz/ http://shz.wis.com.cn:8080/
</VirtualHost>

哎,自己傻了。
谢谢!