apache资源服务器+负载均衡

最近的项目的环境是前台web有4台服务器,每台机子上都装有weblogic和apache,weblogic发布web项目,apache上主要是web项目的图片、js、css已经静态网页。在这4台服务器的前端放了个负载均衡的服务器,用户的请求通过这个负载均衡服务器分发到web服务器以及apache 。负载均衡服务器会过滤用户请求url,如果是带/resources/的请求就丢给web服务器的9000端口,也就是apache服务器监听的端口,这样apache通过隐射取到资源返回。如果url不带/resources/则丢给9001的weblogic来处理。
apache上的静态网页是后台一套系统人为控制生成的。web项目中有一个页面a.ftl通过iframe包含这些静态页面:
<div id="divFrameRight">
<iframe id="_iframe" name="_iframe" src="#" width="100%" FRAMEBORDER="0" SCROLLING="no" onload="initHeight()"></iframe>
</div>


其他页面跳转到a页面时会传过来iframe要包含的页面地址,如:
http://xx.xx.xx.xx/page/ftl/a.ftl?url=http://xx.xx.xx.xx/resource/cache/2/abcd43748977.html

a.ftl得到请求的url,把resource替换成resources,然后把该url给iframe,iframe加载页面:
document.getElementById("_iframeId").src = url;


这样做在公司的测试环境(一台服务器上装weblogic和apache,没有负载均衡)没有问题,放在生产环境却出现了问题,iframe在加载页面时会报404找不到页面的错误,右键刷新iframe中的页面,页面才能出来。

分析后猜想是js控制iframe的src发出的请求负载均衡是丢给weblogic来处理的,所以没有找到页面。重新刷新才丢给apache来处理。至于为什么负载均衡为什么会把带/resources/的url丢给weblogic来处理,不是很明白。


在ftl中得到url,并处理url,直接付给iframe即解决问题:
<iframe id="_iframe" name="_iframe" src="${strURL}" width="100%" FRAMEBORDER="0" SCROLLING="no" onload="initHeight()"></iframe>


不是很明白原因,解决办法是通过不断的测试发现的。越是复杂的系统,诡异的问题越多。所以在每个环境的测试是很重要的,遇到了问题,观察发现推论排错也是很重要的,找到了关键点,能够把问题快速的解决才是上上策。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值