通过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层面,都是以最终用户请求的方式为匹配准则。