現(xiàn)在網(wǎng)上流傳的實現(xiàn)iis和tomcat共享80端口的方法是基于isapi_redirect插件實現(xiàn)的, 我的實現(xiàn)方法不同, 原理相似,具有更好的優(yōu)點.
先說下基于isapi_redirect缺點,java 項目作為iis下的一個虛擬目錄存在, iis下的項目使用頂級域名, tomcat下的項目只能作為二級目錄訪問;
例如iis下項目 使用www.iisPRoject.com訪問, 則tomcat下的項目只能 www.iisproject.com/tomcatproject 這么訪問, 如此變得不友好了.
我的實現(xiàn)方式, 利用IIS的應(yīng)用程序請求路由 ARR (application request route) 來實現(xiàn)請求轉(zhuǎn)發(fā).
"共用80端口"示意
大致步驟( ARR使用請參考上篇文章或自行百度), 在iis上安裝ARR, 配置2個server farm (iis應(yīng)用使用一個iisFarm,tomcat使用一個tomcatFarm), 每個server farm中只有一臺機器即localhost,端口使用自己應(yīng)用端口(如上圖iis 應(yīng)用使用8080,tomcat應(yīng)用使用8090) , 每一個server farm 都設(shè)置url重寫routing rules規(guī)則, 規(guī)則中根據(jù)訪問url的不同轉(zhuǎn)發(fā)給不同的serverFarm處理.
場景一 使用不同的域名訪問
iis下的某個應(yīng)用域名為www.iisproject.com, tomcat下的某個應(yīng)用域名www.tomcatproject.com.
iisfarm使用的routing rules.
根據(jù)上圖設(shè)置, 只有www.iisproject.com域名下的80端口的http請求 iis 會交給ARR中的iisFarm進行處理, iisFarm中只有l(wèi)ocalhost:8080的機器,即請求轉(zhuǎn)交給了8080端口的iis應(yīng)用負責(zé)處理.
tomcatFarm routing rules設(shè)置
同理www.tomcatproject.com域名下的80端口的http請求 iis 會交給ARR中的tomcatFarm進行處理, tomcatFarm中只有l(wèi)ocalhost:8090的服務(wù)器, tomcat工作在8090端口, 所以請求是tomcat在處理.
場景二 使用二級目錄訪問
場景一使用了2個不同的域名, 如果只有一個域名或沒有域名, 我們也是有辦法的, 就是使用 域名/二級目錄 或ip/二級目錄的方式實現(xiàn)訪問, 如 www.project.com/iis,www.project.com/tomcat 或192.168.0.10/iisproject ,192.168.0.10/tomcatproject方式. 實現(xiàn)方式和場景一幾乎一樣, 只是配置routing rules時, url 為www.project.com/iis開頭的交給iisFarm處理, 為www.project.com/tomcat開頭的交給tomcatFarm處理, 可以通過正則表達式,通配符搞定的.
以上兩個場景, 無論使用域名訪問,還是使用二級目錄訪問, 在外部客戶端看來, iis應(yīng)用和tomcat應(yīng)用共用了80端口,目的達到.
|
新聞熱點
疑難解答