问题描述
公司内部系统很多,开发的语言各异,有ruby的,jsp的,asp的,web服务器也用到了apache,tomcat,iis等,各系统又用到了很多不同的端口。总之用户体验是比较差的。现在我想把这些系统的URL都整合在同一个域名(test.abc.net)下面,客户端的所有请求都发到服务器A的apache,并由其作反向代理分别发送请求到相应服务器。现在的问题是ProxyPass/yosan_systemhttp://192.168.0.9:3000/yosan_system/中红色字体部分必须一致,如果不一致的话,首页可以正常访问,但是登录后就报404错误。如ProxyPass/yosanhttp://192.168.0.9:3000/yosan_system/访问test.abc.net/yosan一切正常,但是登录后却出现404错误,URL又转到了test.abc.net/yosan_system/***(按理应该是test.abc.net/yosan/***)。研究了好几天,还是不知何故?还请各位老大不吝赐教。附:apache相关设置<VIRTUALHOST*:80>#ServerNametest.abc.net#ProxyPreserveHostOn#ProxyRequestsOff#SetEnvforce-proxy-request-1.01#SetEnvproxy-nokeepalive1DocumentRoot"C:web"DirectoryIndexlogin.htmlmain.jsp
解决方案二:
解决方案三:
解决方案四:
不解析本服务器的apache站点
解决方案五:
解决方案六:
解决方案七:
解决方案八:
解决方案九:
解决方案十:
解决方案十一:
#ProxyPass/sdemxp!ProxyPass/innersystem!
解决方案十二:
解决方案十三:
解决方案十四:
不解析本服务器的apache站点
解决方案十五:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#反向代理本服务器IIS
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#ProxyPass/UTILRESVhttp://test.abc.net:888/UTILRESV/ProxyPassReverse/UTILRESVhttp://test.abc.net:888/UTILRESV/ProxyPass/OODSearchhttp://test.abc.net:888/OODSearch/ProxyPassReverse/OODSearchhttp://test.abc.net:888/OODSearch/ProxyPass/SkillInfohttp://test.abc.net:888/SkillInfo/ProxyPassReverse/SkillInfohttp://test.abc.net:888/SkillInfo/ProxyPass/webvotehttp://test.abc.net:888/webvote/ProxyPassReverse/webvotehttp://test.abc.net:888/webvote/
解决方案:
解决方案:
解决方案:
反向代理本服务器IIS
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#反向代理服务器B的ruby
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#ProxyPass/yosan_systemhttp://192.168.0.9:3000/yosan_system/ProxyPassReverse/yosan_systemhttp://192.168.0.9:3000/yosan_system/
解决方案:
解决方案:
解决方案:
反向代理服务器B的ruby
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#反向代理服务器C的ruby
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#ProxyPass/ismshttp://192.168.0.12:3000ProxyPassReverse/ismshttp://192.168.0.12:3000
解决方案:
解决方案:
解决方案:
反向代理服务器C的ruby
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#反向代理服务器C的apache
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#ProxyPass/loginhttp://192.168.0.12:27000/login/ProxyPassReverse/loginhttp://192.168.0.12:27000/login/
解决方案:
解决方案:
解决方案:
反向代理服务器C的apache
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#反向代理服务器C的tomcat
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#ProxyPass/homehttp://192.168.0.12:8080/homeProxyPassReverse/homehttp://192.1.0.12:8080/home
解决方案:
解决方案:
解决方案:
反向代理服务器C的tomcat
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#反向代理本服务器tomcat
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#ProxyPass/http://test.abc.net:8080/ProxyPassReverse/http://test.abc.net:8080/
解决方案:
解决方案:
解决方案:
反向代理本服务器tomcat
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
解决方案:
#<Proxy*>OrderDeny,AllowAllowfromall</Proxy></VIRTUALHOST>
解决方案
本帖最后由 hzieemy 于 2011-09-14 15:38:34 编辑
解决方案:
http://www.phpchina.com/manual/apache/mod/mod_proxy.html给你一个apache2.2的中文版参考手册!你要问的问题!里面都可以解决!建议这种问题不要拿出来问,要找帮助或使用文档!Wishyougoodluck
解决方案:
这个文档我也看过了,一些参数看得不是很明白。我也是折腾好几天不出来了才来问问。
解决方案:
我仔细看了你的问题了!同个服务器上部署多个项目都不是你这么部署的!你用apache就得按照它定的规则来!你看去看看那个文档!看看人家怎么说的部署多个项目!
解决方案:
/*代理*/ProxyPass/http://www.chengjun.com.cn:8080//*反向代理*/ProxyPassReverse/http://www.chengjun.com.cn:8080/
解决方案:
引用3楼xiongchenghui的回复:
我仔细看了你的问题了!同个服务器上部署多个项目都不是你这么部署的!你用apache就得按照它定的规则来!你看去看看那个文档!看看人家怎么说的部署多个项目!
还请兄弟明示
解决方案:
ProxyPass/yosanhttp://192.168.0.9:3000/yosan_system/http://192.168.0.9:3000/路径下有yosan目录吗?大哥别想当然
解决方案:
同一域名同一端口好像是不支持访问多个项目的!我晓得的就是你要部署多个项目,要嘛多整几个域名或者说虚拟主机,要嘛监听多个端口,每个项目对应一个端口!你要明白你部署那么多项目就一个url进去,他知道访问哪个项目的首页啊???没那么智能的!要么你路径赔死!那你部署多个项目的目标就没用了!所以你只有用上面两种方法!
解决方案:
yosan是虚拟路径,对应的是http://192.168.0.9:3000/路径下的yosan_system
解决方案:
引用8楼hzieemy的回复:
yosan是虚拟路径,对应的是http://192.168.0.9:3000/路径下的yosan_system
apache的说明文档都是这么写的我就是不明白我用这个虚拟路径为什么不行,当然也可以把yosan写成yosan_system但是如果不指定虚拟路径的话,以下两条就不能共存了ProxyPass/http://test.abc.net:8080/ProxyPass/http://192.168.0.12:3000当然你说的多个端口也可以解决,但是毕竟不是一个完美的解决方案,也违背了我做这个整合的初衷。
解决方案:
ProxyPass/yosanhttp://192.168.0.9:3000/yosan_system/当你输入“http://apache监听端口的url(一般是域名或者IP地址)/yosan”时跳转到”http://192.168.0.9:3000/yosan_system/“ProxyPassReverse/yosanhttp://192.168.0.9:3000/yosan_system/当你访问“http://192.168.0.9:3000/yosan_system/“时浏览器显示“http://apache监听端口的url(一般是域名或者IP地址/yosan”,但是http://apache监听端口的url(一般是域名或者IP地址/yosan你没有指定路径肯定要错了,只要它不错!只有指定到每一个JSP页面!或者说每个具体的UI。类似:/yosan/index.jsphttp://192.168.0.9:3000/yosan_system/index.jsp/yosan/add.jsphttp://192.168.0.9:3000/yosan_system/add.jsp……maybe就不会错了!我没试过!
解决方案:
引用9楼hzieemy的回复:
引用8楼hzieemy的回复:yosan是虚拟路径,对应的是http://192.168.0.9:3000/路径下的yosan_systemapache的说明文档都是这么写的我就是不明白我用这个虚拟路径为什么不行,当然也可以把yosan写成yosan_system但是如果不指定虚拟路径的话,以下两条就不能共存了ProxyPass/http://test.ab……
那要么你就只有确定从某个项目的主页出发!然后在哪个主项目的首页中增加其他项目的url!不然的话,你哪个想法是没办法用apache搞定的!
解决方案:
兄弟,不要太想当然,你用人家的东西,就得遵从人家的准则!除非你足够强大,把apache的源码反编译了,改了!那你NB,你想啷个干就啷个干!
解决方案:
引用4楼xiongchenghui的回复:
/*代理*/ProxyPass/http://www.chengjun.com.cn:8080//*反向代理*/ProxyPassReverse/http://www.chengjun.com.cn:8080/
兄弟理解有误。这两个都是反向代理的一部分。
解决方案:
路过,学习中
解决方案:
参照apache的文档,我的配置应该是合理的,我预想的效果也是能实现的。xiongchenghui说我想当然,我就不明白哪里是想当然。
解决方案:
这应该是跟站点代码有关系
解决方案:
楼主这问题解决?能不能分享下?我现在也是用apache反向代理,目前我能访问到网页,但是我点击提交按钮,就提示:无法找到该网页HTTP404最可能的原因是:•在地址中可能存在键入错误。•当您点击某个链接时,它可能已过期。