温馨提示×

debian怎么配tomcat虚拟主机

小樊
38
2026-10-12 07:30:22
栏目: 云计算

在 Debian 上给 Tomcat 配置虚拟主机(Virtual Host),其实就是修改 Tomcat 的 server.xml,并准备好对应的 Web 应用目录。下面以 Debian 11 / 12 + Tomcat 9/10 为例说明。


一、前提条件

  • 已安装 Tomcat(通常路径:/var/lib/tomcat9 或 /opt/tomcat)
  • 知道 Tomcat 安装目录
  • 有域名(如 www.a.com、www.b.com)

二、修改 Tomcat 虚拟主机配置

1. 找到 server.xml

sudo nano /etc/tomcat9/server.xml

或(源码安装):

sudo nano /opt/tomcat/conf/server.xml

2. 添加 <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

六、重启 Tomcat

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(常见生产方案)

生产环境通常:

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

九、常见问题

✅ 403 / 404

  • 检查 ROOT 目录是否存在
  • 检查 appBase 路径

✅ 域名不生效

  • 确认 DNS 或 /etc/hosts
  • 确认 Host name 完全一致

✅ 多域名同一应用

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

如果你愿意,我可以帮你:

  • 写 完整 server.xml 示例
  • 配 Nginx + Tomcat 多虚拟主机
  • 用 systemd 管理多个 Tomcat 实例

直接说你的使用场景即可。

0 踩