tomcat实现多域名解析到同一公网IP,访问不带端口号(多域名,多应用,同端口)
转载
一、现有资源:
1、阿里云centOS6.5服务器;
2、安装tomcat8.0+JDK;
3、两个不同maven项目的war包,项目名分别为cloud、am;
4、两个域名http://www.lureed.top/ 、 http://www.horace.space/,且已经成功解析到同一个IP。
二、简单方法
在服务器不同目录下解压两个tomcat用不同的端口号,比如一个是8080,另一个是8088;IP就分别是:
http://www.lureed.top:8080/
http://www.horace.space:8088/
但是这种IP太丑了,不管是自己用,还是推广给客户都是很low的,所以不推荐这种方法。
三、实用方法
1、Tomcat去除项目名称和端口号,直接使用ip地址访问项目
2、将tomcat下的webapps文件复制一份到同一目录下如下图所示为webapps2
3、修改sever.xml配置文件
先将<Engine>标签下的<Host>标签复制一份到<Engine>标签下,然后修改如下
<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.lureed.top" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidatinotallow="false" xmlNamespaceAware="false">
<Context path="" docBase="cloud" debug="0"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="www.horace.space" appBase="webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidatinotallow="false" xmlNamespaceAware="false">
<Context path="" docBase="am" debug="0"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
对host标签进行一些解释
I、name="www.horace.space",name为域名
II、appBase="webapps2",appBase为项目war包存放目录。tomcat默认为webapps.
III、<Context path="" docBase="am" debug="0"/>,Context标签中的docBase为目录下存放的项目名
这三点必须修改,缺一不可。
webapps2目录如下图: