通过一个 Tomcat 端口访问多个 Tcoamt 项目

来源:互联网 发布:金融网络平台 编辑:程序博客网 时间:2024/06/09 22:05
业务场景

        需求是这样的,有一个 Tomcat是80端口,现在我要通过这个 Tomcat 转发到服务器其他 Tomcat, 其它 Tomcat 的端口不是80。这样做就可以避免这样 www.baidu.com:8081 需要加指定端口的情况。

        比如我现在的域名是 www.baidu.com. 我映射好域名和ip,建好了对应的子域名 one.baidu.com、two.baidu.com。现在服务器有三个 Tocmat 启动,端口分别是:80 81 82。因为默认端口是80所以我可以直接www.baidu.com 访问到我的80tomcat的项目。但是我想 one.baidu.com 访问到81的 Tomcat, two.baidu.com访问到82的 Tomcat。

实现

        首先要配80的域名映射。在80的 Tomcat 的 server.xml 的 Engine节点下配置
1
2
3
4
5
6
7
8
9
10
      <Host name="www.baidu.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
                         
            <Context path="" docBase="baidu" reloadable="true" />
        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>
        这样我输入www.baidu.com就可以访问到80tomcat下的baidu的项目了。

        下面的配置可以让我直接输入one.baidu.com two.baidu.com 直接访问到对应端口下的项目
1
2
3
4
5
6
7
8
9
10
      <Host name="one.baidu.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
             
            <Context path="/" docBase="/test/one/apache-tomcat-8.0.14/webapps/oneBaidu" reloadable="true" />
        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>

      <Host name="two.baidu.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
             
            <Context path="/" docBase="/test/two/apache-tomcat-8.0.14/webapps/twoBaidu" reloadable="true" />
        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
      </Host>
        这样就达到了需求了。

        这个方式的话,当启动第一个80端口的 Tomcat 的时候,其他项目会全部启动。分别启动其他端口的 Tomcat 也没影响,只是会更新项目而已。

        这样做的好处就是,如果某个项目修改了要上传了,启动下对应端口下的 Tomcat,在关闭,那么就更新了,不用像以前那样启动一个 Tomcat 有很多项目要重启。

        所有的域名应该都是指向同一个服务器IP把? 还是只要主域名指定就行,其他子域名不需要配置。

0 0
原创粉丝点击