問題背景:
在常規情況下,如果我們部署2個用到Tomcat中,只能將一個應用命名爲ROOT,在做了域名-IP的映射之後,我們可以通過類似http://www.jangle.xyz的方式訪問該應用。
但如果我們添加一個新的應用:如hello應用, 常規的,我們將通過http://www.jangle.xyz/hello 的方式訪問這個應用服務器。
由於域名映射不能帶目錄, 即:即時做了 hello.jangle.xyz 也不能映射至 123.12.32.45/hello 來實現對應關係。
解決方案:
如果希望實現 hello.jangle.xyz 映射至 123.12.32.45 並定位到 hello應用 ,並且
www.jangle.xyz 也映射至123.12.32.45 並定位到ROOT應用。 那麼Tomcat提供Host的配置方式,實現這樣的需求。
參考:Tomcat的總體架構概覽2(v8.5)(用server.xml的視角解讀)
我們在server.xml中,找到Engine節點下的Host節點, 編寫一個Host的兄弟節點(即Engine的子節點),如下:
<Host name="hello.jangle.xyz" >
<Context docBase="D:/jangle/hello" path="/"></Context>
</Host>
docBase 是應用的絕對路徑, path="/" 表示頂級路徑。 這樣,我們就可以使用地址http://hello.jangle.xyz 訪問到 123.12.32.45的hello項目, 並且 http://www.jangle.xyz 所訪問的ROOT項目不受影響。
在<Host>中添加<Alias>,設置別名,即實現多個域名對應一個主機。
<Host ...>
<Alias>blog.jangle.xyz</Alias>
</Host>