Tuesday, January 22, 2008

Host|只有一个IP,通过域名访问不同WLS应用的方法-Apache+WLS

只有一个IP,通过域名访问不同WLS应用的方法-Apache+WLS

只有一个IP,通过域名访问不同WLS应用的方法-Apache+WLS

提交时间: Nov 16, 2004 3:37:17 PM
引用 回复   发消息

1. 简述
Apache 2.0 可以与Weblogic Server很好的结合起来用。假如只有一个IP,而需要通过不通的域名访问不同的应用(Server),这时Apache的Virtual Host就可以派上用场了。可以简单的实现如下转换:
abc.def.com -> localhost:7001
abc.ghi.com -> localhost:7003

2. 配置步骤
2.1)  Webloigc 上的配置
建议将不同的Web应用(相对独立的)部署在不同的Server (IP:Port)上,不同的Server的IP可以相同,也可以不同。 如果IP相同,端口就不能相同。假如有两个Web Application: testweb1, testweb2, 分别Deploy 到 Server1(localhost:7001) 和 Server2 (localhost:7003)上。
另外,如果想将部署的Web应用作为DefaultWebApp, 也就是访问的时候不用在URL上加上应用名,就需要在应用的 WEB-INF\weblogic.xml 文件中加上
<weblogic-web-app>
……
<context-root>/</context-root>
   ……
</weblogic-web-app>

2.2) Apache 上的配置
   主要是httpd.conf 的配置。
2.2.1) 将文件 %BEA_HOME%\weblogic81\server\lib\solaris\mod_wl_20.so 复制到Apache安装目录下的modules目录下。如果需要SSL,还需要复制相应文件。
2.2.2) 修改httpd.conf如下
#指定缺省访问文件,比如是 index.jsp,把它加该参数后面,该步可选。
DirectoryIndex index.html index.html.var index.jsp

#加载模块
LoadModule weblogic_module modules/mod_wl_20.so

#指定访问文件的匹配模式, 这里需要把WeblogicHost 和 WeblogicCluster的指定都删掉,因为需要不同的Host来处理
<IfModule mod_weblogic.c>
# WebLogicCluster 10.132.0.168:7003,10.132.0.168:7005
# MatchExpression *.*
#  WebLogicHost 127.0.0.1
#  WebLogicPort 7001
#这里指点所有文件都交由WebLogic处理
  MatchExpression *.*   
  ErrorPage http://localhost      # 出错后重定向的页面
  WLLogFile C:\temp\wlproxy
</IfModule>

#所有URL 的请求都交由WebLogic处理
<Location />
SetHandler weblogic-handler
PathTrim /
</Location>

#指定虚拟主机
NameVirtualHost *:80

#匹配 abc.ghi.com 192.168.5.56:7001
<VirtualHost *:80>
  ServerName abc.ghi.com
  WebLogicHost 192.168.5.56
  WebLogicPort 7001
#PathPrepend /testweb1  #该参数会加到URL 请求的前缀,但我测试时不起作用
  ConnectTimeoutSecs 20
    ErrorLog c:\temp\ghi.log
    CustomLog c:\temp\ghic.log common
</VirtualHost>

#匹配 abc.def.com 192.168.5.56:7003
<VirtualHost *:80>
  ServerName abc.def.com
  WebLogicHost   192.168.5.56
  WebLogicPort 7003
# PathPrepend /testweb2
  ErrorLog c:\temp\def.log
  CustomLog c:\temp\defc.log common
  ConnectTimeoutSecs 10
</VirtualHost>


3. 测试
测试的前提是,DNS要设置好,就是不同的域名都要指向同一IP。比如abc.def.com abc.ghi.com 都要被解释为192.168.5.56。如果在win2000系统测试,修改hosts文件即可。配置完成,需要重启apache后。之后就可以实现以下访问:
http://abc.def.com 相当于 http://192.168.5.56:7003
http://abc.ghi.com 相当于 http://192.168.5.56:7001

RadeZheng原创

No comments: