在 Debian 上给 Tomcat 配置虚拟主机(Virtual Host),其实就是修改 Tomcat 的 server.xml,并准备好对应的 Web 应用目录。下面以 Debian 11 / 12 + Tomcat 9/10 为例说明。
/var/lib/tomcat9 或 /opt/tomcat)www.a.com、www.b.com)server.xmlsudo nano /etc/tomcat9/server.xml
或(源码安装):
sudo nano /opt/tomcat/conf/server.xml
<Host> 配置在 <Engine> 标签内(通常在 </Host> 下方)添加:
<Host name="www.a.com" appBase="/var/www/a"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="a_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="www.b.com" appBase="/var/www/b"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="b_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
说明:
name:域名appBase:该虚拟主机的网站根目录ROOT.war 或 ROOT 目录即默认应用sudo mkdir -p /var/www/a/ROOT
sudo mkdir -p /var/www/b/ROOT
放入测试页面:
echo "A Site" | sudo tee /var/www/a/ROOT/index.jsp
echo "B Site" | sudo tee /var/www/b/ROOT/index.jsp
sudo chown -R tomcat9:tomcat9 /var/www/a
sudo chown -R tomcat9:tomcat9 /var/www/b
(用户根据实际 Tomcat 用户调整)
如果是本机测试:
sudo nano /etc/hosts
添加:
127.0.0.1 www.a.com
127.0.0.1 www.b.com
sudo systemctl restart tomcat9
或:
sudo /opt/tomcat/bin/shutdown.sh
sudo /opt/tomcat/bin/startup.sh
curl http://www.a.com:8080
curl http://www.b.com:8080
生产环境通常:
示例 Nginx:
server {
listen 80;
server_name www.a.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
}
✅ 403 / 404
ROOT 目录是否存在appBase 路径✅ 域名不生效
/etc/hostsHost name 完全一致✅ 多域名同一应用
<Alias>a.com</Alias>
<Alias>www.a.com</Alias>
如果你愿意,我可以帮你:
直接说你的使用场景即可。