www.site1.com、www.site2.com)。hosts 文件解析域名;生產環境需配置 DNS 解析。tomcat/
├── webapps1/ # site1 應用根目錄
│ └── ROOT/
│ └── test.html
├── webapps2/ # site2 應用根目錄
│ └── ROOT/
│ └── test.html
└── conf/server.xml
將原 webapps 複製為 webapps1、webapps2,分別放置站點文件。test.html 內容區分顯示當前域名。
<Engine name="Catalina" defaultHost="www.site1.com">
<!-- Host 1 -->
<Host name="www.site1.com" appBase="webapps1"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="site1_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="site1_log." suffix=".txt"
timestamp="true"/>
</Host>
<!-- Host 2 -->
<Host name="www.site2.com" appBase="webapps2"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="site2_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="site2_log." suffix=".txt"
timestamp="true"/>
</Host>
</Engine>
| 屬性 | 作用 |
|---|---|
name | 域名,必須與 DNS/hosts 一致 |
appBase | 該虛擬主機 Web 應用根目錄(相對 $CATALINA_HOME) |
unpackWARs | true 自動解壓 WAR 包 |
autoDeploy | true 熱部署監控 |
Valve (AccessLogValve) | 訪問日志,按虛擬主機分離文件前綴 |
Logger (FileLogger) | 內部日志,按虛擬主機分離 |
啟動 Tomcat,瀏覽器訪問:
https://www.site1.com:8080/test.html → 顯示 site1 內容https://www.site2.com:8080/test.html → 顯示 site2 內容若均正確,虛擬主機配置成功。
每個虛擬主機綁定獨立 IP,適用於郵件服務器需求(SSL 證書、反向解析)。配置時在 <Connector> 指定 address,<Host> 不變。本文專注共享 IP 模式(IDC 主流)。