使用主机头示范,由于测试环境没有DNS服务器,搭建太麻烦。我们通过修改本机的如下文件模拟实现:
C:\WINDOWS\system32\drivers\etc\HOSTS,该文件作用:
host是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。
我们在文件中添加如下:
127.0.0.1 localhost
127.0.0.1 app1.family.cn
127.0.0.1 app2.family.cn
然后修改server.xml文件中虚拟主机的主机头分别为:
<Servicename="Catalina.app1">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
<Engine defaultHost="app1.family.cn">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<HostCOLOR: red">app1.family.cn" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t"%r" %s %b" />
<Contextpath="" docBase="app1" />
</Host>
</Engine>
</Service>
<Service>
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
<Engine defaultHost="app2.family.cn">
<RealmclassName="org.apache.catalina.realm.LockOutRealm">
<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<HostCOLOR: red">app2.family.cn" appBase="webapps"
unpackWARs="true"autoDeploy="true">
<ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t"%r" %s %b" />
<Contextpath="" docBase="app2" />
</Host>
</Engine>
</Service>
重新启动Tomcat,在浏览器地址栏访问如下地址:
:80801/inde.jsp
:80802/ognl.jsp
成功!!!!!!!!!
观察Tomcat下的conf目录:
不难发现,在两个Engine的名称的目录下各自生成了虚拟主机名称的目录。