vlambda博客
学习文章列表

tomcat 实现多端口多域名访问

在我们部署项目到Tomcat的时候,有时候会配置通过域名访问项目。接下来我们就来了解一下多域名多端口访问项目相关配置。

演示环境

  • Tomcat 8.5

进行配置

多端口访问

当一个项目需要使用多个端口号去访问的时候,只需要在Service 标签下进行这样简单的配置一下就好:

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />

<Connector port="8081" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />

这样就保证了当Tomcat运行起来的时候,同时监听多个端口,通过80808081端口来访问项目。

多域名访问

配置项目的多域名的访问,最简单的方式就是在Host标签下配置Alias标签:

<Host name="www.jerome.xin"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>domain.jerome.xin</Alias>
   <Alias>domain2.jerome.xin</Alias>
<Context docBase="/project" path=""/>  
</Host>

如果是将Host的内容复制一份,只修改name属性也可以达到同样的效果。可以通过www.jerome.xindomain.jerome.xindomian2.jerome.xin这些域名来访问项目。

多端口多域名访问

配置这个就是将Service标签以及标签下的内容复制一下修改name,然后配置不同Connector,再配置不同的Host#name属性,如下所示:

<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
           <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                  resourceName="UserDatabase"/>
       </Realm>
       <Host name="www.jerome.xin"  appBase="webapps" unpackWARs="true" autoDeploy="true">
           <Context docBase="/project1" path=""/>  
       </Host>
   </Engine>
</Service>

<Service name="Catalina1">
<Connector port="8081" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
           <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                  resourceName="UserDatabase"/>
       </Realm>
       <Host name="www.jeromezhu.xin"  appBase="webapps" unpackWARs="true" autoDeploy="true">
           <Context docBase="/project2" path=""/>  
       </Host>
   </Engine>
</Service>

这样的配置就实现了,通过www.jerome.xin:8080访问到project1项目,通过www.jeromezhu.xin:8081访问到project2项目。

总结

通过上面的配置,我们已经完成了通过域名访问项目的各种方式。但是配置多域名的时候稍有不慎就会出现重复加载资源的问题。这个问题我在别的文章中进行说明。