配置tomcat使不同端口号不同域名访问不同项目位置

文章类别 in tomcat, tool

这么一个需求: 有不同域名指向一个ip,希望通过访问不同域名可以访问不同的项目,有些项目需要8080端口访问,有些项目需要80端口访问。

例如:

www.aaaa.com  --> webA
www.bbbb.com  --> webB  
localhost:8080/webC --> webC
localhost:80/webD --> webD 

接下来就通过tomcat的配置来实现这样的需求,首先打开tomcat目录下的conf/中的server.xml,在中可以看到原来是这样的:

	<Service name="Catalina">
  
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
       <Connector port="8009" protocol="AJP/1.3" 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="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="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>
    </Engine>
  </Service>

这个是通过8080端口访问webapps下的项目的配置。

添加别的端口访问

那么如果我们需要添加一个80的端口,使得我们可以用8080访问也可以用80访问相关的项目,那么可以增加一个

<Service name="**Catalina1**">
  
<Connector port="**80**" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="**Catalina1**" defaultHost="localhost">

 <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

  <Host name="www.aaa.com"  appBase="**webapps1**"
        unpackWARs="true" autoDeploy="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" />
	<Context path="" docBase="/usr/local/tomcat/apache-tomcat-7.0.64/webapps1/aaa"/>
		   
  </Host>

</Engine>
 	</Service>

可以看到这里将 - Service name –> Catalina1 - Connector port –> 80 - Engine name –> Catalina1 - Host name –> 自己指定的域名,比如你想指定www.aaa.com访问aaa项目 - appBase –> webapps1 - docBase –> 项目的位置

配置好了之后,需要在tomcat的根目录下创建webapps1,在conf目录下创建Catalina1,配置好之后那么你就可以在 8080端口下访问webapp中的项目,还可以通过域名访问80端口中的aaa项目了。

多个域名访问不同的项目

我们刚刚配置了www.aaa.com且用80端口去访问aaa项目,如果现在我还想通过www.bbb.com去访问bbb项目呢,那么这时候就可以在这里面添加:

<Service name="Catalina1">
  
<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Catalina1" defaultHost="localhost">

 <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

  <Host name="www.aaa.com"  appBase="webapps1"
        unpackWARs="true" autoDeploy="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" />
	<Context path="" docBase="/usr/local/tomcat/apache-tomcat-7.0.64/webapps/aaa"/>
		   
  </Host>
  
  <Host name="www.bbb.com"  appBase="webapps1"
        unpackWARs="true" autoDeploy="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" />
		   <Context path="" docBase="/usr/local/tomcat/apache-tomcat-7.0.64/webapps/bbb"/>
  </Host>
</Engine>
  	</Service>

可以看到我们添加了一个host,然后名称为www.bbb.com,docBase指向bbb的项目路径。这样就可以多域名访问了!