通过IHS(IBM HTTP SERVER)转发WAS(WEBSPHERE)应用的小问题

时间:2022-05-11 14:36:29


通过IHS(IBM HTTP SERVER)转发WAS(WEBSPHERE)应用的小问题

通过IHS转发应用本来不是什么大问题,可最近就是一小问题让我百思不得其解,直至将请求完全截下来才明白其中的问题所在。

大概的需求是这样的:

WAS(IP假如为1.1.1.1)有三个虚拟主机:admin_host,default_host,my_host

admin_host主机别名:
  *  9060   
  *  9043   

default_host主机别名:
  *  9080   
  *  80   
  *  9443   

my_host主机别名:
  *  9082      
  *  9445
 
现要将default_host,my_host的应用映射到IHS,通过IHS(IP假如为:2.2.2.2)访问,比如:

原有应用:http://1.1.1.1:9080/abc/--------------->http://2.2.2.2/abc/
原有应用:http://1.1.1.1:9082/app/--------------->http://2.2.2.2/app/

按常规方法,映射很快就建立起来了,但default_host中的应用没有问题,都可以按映射后的方式访问
但my_host的应用只能按原有方式访问,无法通过IHS访问,错误是:无法找到页面。


看plugin-cfg.xml,没有看出任何问题,虚拟主机映射也好象没有看出问题。
由于http://1.1.1.1:9082/app/可以访问,因此也没有怀疑WAS中有什么配置问题,

经过数次尝试后,只好用工具将IHS转发的请求截下来看看,并同直接访问所产生的HTTP请求数据比较,
终于发现了问题所在:

在所有HTTP请求中,有一个HTTP头,叫HOST,

利用直接访问,HOST头的内容:
 HOST:1.1.1.1:9082

而利用IHS所产要的请求,HOST头为:
 HOST:2.2.2.2
 
而WAS在匹配虚拟主机用的就是这个字段,因此,最终的解决方案就简单了:

只要在my_host中,主机别名加上:
 * 80
 
即可。


由此可以看出,虚拟主机,无论是IHS层面或是WAS层面,都是以最终用户请求的方式为匹配准则。