• 利用IIS应用请求转发ARR实现IIS和tomcat整合共用80端口


      现在网上流传的实现iis和tomcat共享80端口的方法是基于isapi_redirect插件实现的, 我的实现方法不同, 原理相似,具有更好的优点.

      先说下基于isapi_redirect缺点,java 项目作为iis下的一个虚拟目录存在, iis下的项目使用顶级域名, tomcat下的项目只能作为二级目录访问;

      例如iis下项目 使用www.iisproject.com访问, 则tomcat下的项目只能 www.iisproject.com/tomcatproject 这么访问, 如此变得不友好了.

     

      我的实现方式, 利用IIS的应用程序请求路由 ARR (application request route) 来实现请求转发.

    "共用80端口"示意

      大致步骤( ARR使用请参考上篇文章或自行百度), 在iis上安装ARR, 配置2个server farm (iis应用使用一个iisFarm,tomcat使用一个tomcatFarm), 每个server farm中只有一台机器即localhost,端口使用自己应用端口(如上图iis 应用使用8080,tomcat应用使用8090) , 每一个server farm 都设置url重写routing rules规则, 规则中根据访问url的不同转发给不同的serverFarm处理.

    场景一 使用不同的域名访问

             iis下的某个应用域名为www.iisproject.com, tomcat下的某个应用域名www.tomcatproject.com.

    iisfarm使用的routing rules.

        根据上图设置, 只有www.iisproject.com域名下的80端口的http请求 iis 会交给ARR中的iisFarm进行处理, iisFarm中只有localhost:8080的机器,即请求转交给了8080端口的iis应用负责处理.

    tomcatFarm routing rules设置

      同理www.tomcatproject.com域名下的80端口的http请求 iis 会交给ARR中的tomcatFarm进行处理, tomcatFarm中只有localhost:8090的服务器, tomcat工作在8090端口, 所以请求是tomcat在处理.

    场景二 使用二级目录访问

        场景一使用了2个不同的域名, 如果只有一个域名或没有域名, 我们也是有办法的, 就是使用 域名/二级目录 或IP/二级目录的方式实现访问,  如 www.project.com/iis,www.project.com/tomcat 或192.168.0.10/iisproject ,192.168.0.10/tomcatproject方式. 实现方式和场景一几乎一样, 只是配置routing rules时, url 为www.project.com/iis开头的交给iisFarm处理, 为www.project.com/tomcat开头的交给tomcatFarm处理, 可以通过正则表达式,通配符搞定的.

    以上两个场景, 无论使用域名访问,还是使用二级目录访问,  在外部客户端看来, iis应用和tomcat应用共用了80端口,目的达到.

     

  • 相关阅读:
    校门外的树
    年龄与疾病
    数组逆序重放
    计算书费
    陶陶摘苹果
    与指定数字相同的数的个数
    上学路线
    NOIP2011 普及組 統計單詞數
    [HAOI2012]音量调节
    [USACO11JAN]利润Profits
  • 原文地址:https://www.cnblogs.com/aphason/p/4571899.html
Copyright © 2020-2023  润新知