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