通過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層面,都是以最終使用者請求的方式為比對準則。