使用Apache同时做Tomcat和Weblogic的WebServer配置的方法
使用Apache同时做Tomcat和Weblogic的WebServer配置的方法
网上一般只介绍Apache做Tomcat或Apache做Weblogic的WebServer的配置,但Apache同时做两者的WebServer的文章很少见。
不久前我就遇到了这个问题,简介如下:各省电信通过内部DDN连到电信集团公司总部(设在北京),只能通过ip为98的PCServer访问各种服务,目前有集团总部结算分析服务在98上(使用Tomcat4)运行,和在建的集团总部经营分析服务(用WeblogicServer8.1,集团公司内部HP-Unix主机,不在DDN上),因此需要在ip为98的PcServer的Apache上为本地Tomcat和远端主机上的WeblogicServer做应用服务,使得各省用户通过98可以来访问这两个系统。
结算分析是没有服务名的(即http://xx.xx.xx.98:8000),静态请求由Apache处理,把静态页面或图片回应到客户端,以减轻Tomcat服务的负担,增强性能;而经营分析服务就需要通过服务名来访问,目前是“telecombi”(即http://xx.xx.xx.98:8000/telecombi),通过telecombi的动态请求应该由Weblogic来处理,静态请求和结算分析一样由Apache处理。一般的Apache+Tomcat或Apache+Weblogic配置我就不用多说了,网上很多地方都有,我只把需要注意的地方罗列以下。
<<Apache的httpd.conf文件>>
1.别名服务:
Alias /telecombi "d:/bi/telecombi"
<Directory "d:/bi/telecombi">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
可以使Apache处理远端主机的静态页面
2.Weblogic的配置:
LoadModule weblogic_module modules/mod_wl_20.so
<Location /telecombi>
SetHandler weblogic-handler
WebLogicHost 132.32.24.5
WebLogicPort 7001
</Location>
<IfModule mod_weblogic.c>
WebLogicHost 132.32.24.5
WebLogicPort 7001
MatchExpression /telecombi/*.jsp
MatchExpression /telecombi/*.do
MatchExpression /telecombi/*.js
MatchExpression /telecombi/*.png
</IfModule>
特别需要注意的是“<Location /telecombi>...</Location>”这一段,如果单独使用Apache+Weblogic,这一段不配没关系,但是,由于配了Tomcat的mod_jk2.dll,所有请求都会转向到Tomcat服务,因此如果这一段没有的话,页面将会报告Tomcat无法找到应用的错误!
从配置可以看出,所有的jsp、do等请求需要WeblogicServer的处理,由于经营分析系统中的js和png图片会动态改变,因此也由WeblogicServer处理。
3.Apache的正反向代理
集团公司内部用户要通过Apache访问各省电信的结算分析,因此Apache要为各省服务作代理,以及为cognos(OLAP服务)做代理;
配置如下:
LoadModule proxy_module modules/mod_proxy.so
...
<IfModule mod_proxy.c>
ProxyPass /cognos http://132.32.24.102/cognos
ProxyPassReverse /cognos http://132.32.24.102/cognos
ProxyPass /p2pd http://132.32.24.102:9300/p2pd
ProxyPassReverse /p2pd http://132.32.24.102:9300/p2pd
ProxyPass /jiangsu http://132.224.24.68:8080
ProxyPassReverse /jiangsu http://132.224.24.68:8080
...
</IfModule>
最后,别忘了把WeblogicServer的plugin选项选中,这样才能使得Weblogic得到客户端访问的正确的IP地址!