温馨提示×

debian Tomcat怎么配虚拟主机

小樊
45
2026-09-06 14:17:56
栏目: 云计算

在 Debian 上给 Tomcat 配置虚拟主机(Virtual Host),通常是通过修改 server.xml 来实现的。下面以 Debian + Tomcat 9/10 为例说明。


一、前提条件

假设:

  • Tomcat 安装在 /opt/tomcat/var/lib/tomcat9
  • 你有两个域名:
    • www.a.com
    • www.b.com

二、修改 Tomcat 配置文件

1. 打开 server.xml

sudo nano /etc/tomcat9/server.xml
# 或
sudo nano /opt/tomcat/conf/server.xml

2. 配置 Engine(通常已存在)

确保有:

<Engine name="Catalina" defaultHost="localhost">

3. 添加虚拟主机

<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

五、重启 Tomcat

sudo systemctl restart tomcat9

访问:

  • http://www.a.com:8080
  • http://www.b.com:8080

六、配合 Nginx(推荐生产环境)

通常是:

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;
    }
}

七、常见问题

1. 默认站点

defaultHost="localhost" 决定未匹配域名时访问谁

2. 多个域名指向同一 Host

<Alias>a.com</Alias>
<Alias>www.a.com</Alias>

3. ROOT 应用

放在:

webapps/a/ROOT

如果你用的是 Tomcat 版本不同想用 systemd / Docker / 多实例,可以告诉我,我给你对应方案。

0