在 Debian 上给 Tomcat 配置虚拟主机(Virtual Host),通常是通过修改 server.xml 来实现的。下面以 Debian + Tomcat 9/10 为例说明。
假设:
/opt/tomcat 或 /var/lib/tomcat9www.a.comwww.b.comserver.xmlsudo nano /etc/tomcat9/server.xml
# 或
sudo nano /opt/tomcat/conf/server.xml
确保有:
<Engine name="Catalina" defaultHost="localhost">
在 <Engine> 标签内添加 <Host>:
<Host name="www.a.com" appBase="webapps/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="webapps/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>
sudo mkdir -p /var/lib/tomcat9/webapps/a
sudo mkdir -p /var/lib/tomcat9/webapps/b
# 放一个测试页面
echo "A Site" | sudo tee /var/lib/tomcat9/webapps/a/index.html
echo "B Site" | sudo tee /var/lib/tomcat9/webapps/b/index.html
如果是 WAR 包,直接放进对应目录即可
修改 /etc/hosts:
sudo nano /etc/hosts
添加:
127.0.0.1 www.a.com
127.0.0.1 www.b.com
sudo systemctl restart tomcat9
访问:
通常是:
Nginx (80) → Tomcat (8080)
Nginx 示例:
server {
listen 80;
server_name www.a.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
}
defaultHost="localhost" 决定未匹配域名时访问谁
<Alias>a.com</Alias>
<Alias>www.a.com</Alias>
放在:
webapps/a/ROOT
如果你用的是 Tomcat 版本不同 或 想用 systemd / Docker / 多实例,可以告诉我,我给你对应方案。