一套Tomcat處理多個域名請求 - Virtual Host


最近和Tomcat較上勁了。。。

作為Tomcat的系列之一,來嘗試下如何用一套Tomcat來處理多個域名請求。

場景:基於成本考慮,多個department共用一台服務器,然后該服務器上就一套Tomcat。各個department有各自的域名,這樣就需要配置Tomcat的虛擬主機來解決。

1. 修改hosts文件

2. 修改server.xml文件

3. 為每個department創建webapps目錄

詳細細節

1. 修改hosts文件

據自己目前的網絡知識,像我們平時上網,當發出www.baidu.com的請求時,該域名會被www的DNS解析成對應的IP,之后就能定位到baidu的主機,進而建立連接進行訪問。

如果真有類似“一套Tomcat來處理多個域名請求”的需求,那么首先應該保證各個域名會被解析成同一個IP。

在這里,為代替DNS的域名解析,暫時修改hosts文件,用來處理各個department的域名。

hosts文件位置:

Windows 7 x64: C:\Windows\System32\drivers\etc

Linux CentOS 7: /etc

假設兩個域名:www.tomcatvirtualhost1.com ; www.tomcatvirtualhost2.com

在hosts文件中增加以下內容,Tomcat Server IP 為真實的IP.

Tomcat Server IP www.tomcatvirtualhost1.com
Tomcat Server IP www.tomcatvirtualhost2.com

2. 修改server.xml文件

修改tomcat中conf下的server.xml文件(使用apache-tomcat-8.5.4)。

在server.xml文件中,有以下默認的<Host>。 name="localhost" appBase="webapps"。name對應域名,appBase對應tomcat下的應用文件夾。

      <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 &quot;%r&quot; %s %b" />

      </Host>

所以增加以下兩個<Host>標簽:

修改name和appBase

      <Host name="www.tomcatvirtualhost1.com"  appBase="department1"
            unpackWARs="true" autoDeploy="true">

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

      </Host>

      <Host name="www.tomcatvirtualhost2.com"  appBase="department2"
            unpackWARs="true" autoDeploy="true">

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

      </Host>

 

3. 為每個department創建webapps目錄

既然server.xml文件中已經增加了2個appBase,所以在tomcat目錄下相應創建文件夾 department1 和 department2。為簡化,可以復制webapps。

4. 測試

啟動Tomcat,瀏覽器鍵入www.tomcatvirtualhost1.com:8080,這將訪問department1;瀏覽器鍵入www.tomcatvirtualhost2.com:8080,這將訪問department2。

 

POST: 后續研究下怎么把端口號也去掉(修改默認端口的方式感覺不好),看着別扭。。。

Done!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM