我們知道nginx是可以根據二級域名配置路由的,其實Tomcat也具有類似的功能。
比如有這樣一個場景:
Tomcat下有兩個項目:blog、shop,部署在服務器上映射的一級域名爲:zhangzw.com。
期望效果:
訪問:http://blog.zhangzw.com,到達的是blog項目,訪問:http://shop.zhangzw.com,到達的是shop項目。
配置方法
找到conf/server.xml
文件,在Engine
標籤下添加兩個Host
配置:
<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 "%r" %s %b"
/>
</Host>
<Host name="blog.zhangzw.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="blog_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
/>
<Context path="" docBase="blog" reloadable="true"/>
</Host>
<Host name="shop.zhangzw.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="shop_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
/>
<Context path="" docBase="shop" reloadable="true"/>
</Host>
</Engine>
說明:
-
Host name
需要與二級域名配置一樣。
-
prefix
access log 每個Host配置不一樣,這樣利於區分。
-
Context docBase
可以是相對路徑,如上所述配置,表示
conf/webapps/blog
,conf/webapps/shop
目錄;也可以是絕對路徑:如:
/usr/local/blog
。