Tomcat+Apache2.2使用mod_proxy做请求转发

今天帮现场实施处理Tomcat + Apache2.2部署问题,在这里记录一下请求转发的配置:

 

参考下面这篇文章,我使用的是最简单的mod_proxy方式来配置, 这种方式只需要修改apache的配置文件即可


http://21nw.com/wap/index-wap2.php?p=10800

 

服务器环境:

  • Apache Httpd 2.2,  IP地址: 10.2.1.18:9090 (80端口被Plone占用)
  • Tomcat 6.0,             IP地址: 10.2.1.104:8080
  • 操作系统: 两台机器都是WinXp
  • 待转发的项目名称: biandan_bj , 这样直接访问tomcat的地址是: http://10.2.1.104 :8080/biandan_bj

配置说明:

  1. 修改Apache\conf 目录下的 httpd.conf 文件, 去掉如下两行的注释 (前面的 “#”字符):
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so

 

  1. 在httpd.conf文件最后加上如下两行配置:
ProxyPass /biandan_bj http://10.2.1.104:8080/biandan_bj
ProxyPassReverse /biandan_bj http://10.2.1.104:8080/biandan_bj

 

 

配置完成后访问: http://10.2.1.18:8080/biandan_bj 即可将请求转发到 10.2.1.104的 tomcat 上

 

注意:

ProxyPass 和 ProxyPassReverse 必须成对出现,否则在页面跳转时会从10.2.1.18转到10.2.1.104上。现场实施只配了ProxyPass,因此出错。

 

P.S:配置方法的弊端

这种代理方式有一个很致命的问题。jsp中不能使用根据request获取的绝对路径,必须使用当前页的相对路径,例如eclipse创建jsp页面是会自动生成如下代码:

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

 

这里的path和basePath都不能使用。通过request获取的ServerName是tomcat主机的ip/hostname。如果采用如下方式引入资源,肯定会造成资源无法访问的问题:

<link rel="stylesheet" href="<%=path%>/css/dy-ui.css">
<script type="text/javascript" src="<%=path%>/js/preTaskList.js"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值