在 Debian 上配置 Tomcat 虚拟主机(Virtual Host),通常是指让 一个 Tomcat 实例承载多个域名/站点。下面以 Debian + Tomcat 9 为例说明(Tomcat 8/10 也类似)。
/etc/tomcat9/server.xml$CATALINA_HOME/conf/server.xmla.example.com、b.example.com)server.xmlsudo nano /etc/tomcat9/server.xml
<Engine> 标签内添加 <Host>示例:两个虚拟主机
<Engine name="Catalina" defaultHost="localhost">
<!-- 默认主机 -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
<!-- 虚拟主机 A -->
<Host name="a.example.com" appBase="/var/www/a"
unpackWARs="true" autoDeploy="true">
<Alias>www.a.example.com</Alias>
</Host>
<!-- 虚拟主机 B -->
<Host name="b.example.com" appBase="/var/www/b"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
说明:
name:域名appBase:该虚拟主机的应用目录Alias:附加域名sudo mkdir -p /var/www/a/ROOT
sudo mkdir -p /var/www/b/ROOT
放入测试页面:
echo "A Site" | sudo tee /var/www/a/ROOT/index.html
echo "B Site" | sudo tee /var/www/b/ROOT/index.html
如果是 Debian 包安装的 Tomcat:
sudo chown -R tomcat:tomcat /var/www/a /var/www/b
sudo chmod -R 755 /var/www/a /var/www/b
sudo systemctl restart tomcat9
修改本地 hosts 文件:
sudo nano /etc/hosts
添加:
127.0.0.1 a.example.com
127.0.0.1 b.example.com
访问:
http://a.example.com:8080
http://b.example.com:8080
修改 server.xml 中 Connector 端口为 80(需 root)
示例 Nginx:
server {
listen 80;
server_name a.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
✅ 404
appBase 目录不存在ROOT 应用✅ 无法访问
✅ 多域名共用一个项目
<Alias>如果你用的是 Tomcat 版本不同 或想 一个域名多个项目 / 多端口,可以告诉我,我可以给你更具体的配置。