Tomcat多虚拟主机(virtual host)配置

一个 tomcat 服务器同时服务多个虚拟主机,前提是多个域名同时指向这台 tomcat 服务器。假如有两个域名同时指向我们的 tomcat 服务器-dnsname1 和 dnsname2,如果没有我们通过修改 hosts 文件来进行测试。Linux 下 hosts 在/etc/hosts,而 windows 下则是 C:\Windows\System32\drivers\etc\hosts。添加下面两行:

1
2
127.0.0.1	dnsname1
127.0.0.1 dnsname2

修改$TOMCAT_BASE$/conf/server.xml 文件,在 Engine 下新建两个 host 元素:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Host name="dnsname1"  appBase="/home/user1/webapp"
unpackWARs="true" autoDeploy="true">

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log_dnsname1" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

<Host name="dnsname2" appBase="/home/user2/webapp"
unpackWARs="true" autoDeploy="true">

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log_dnsname2" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

appBase分别指向了不同目录,通常是不同用户的 web 应用目录。
重启 tomcat,通过浏览器分别访问 http://dnsname1http://dnsname2 ,将会获得不同的页面。