Tomcat虚拟主机配置指南
Tomcat虚拟主机允许同一台服务器通过不同域名或IP地址承载多个独立Web应用,核心配置通过修改server.xml文件实现。以下是详细步骤及注意事项:
http://localhost:8080访问默认页面验证);C:\Windows\System32\drivers\etc\hosts或Linux的/etc/hosts),添加127.0.0.1 yourdomain.com映射。server.xml位于Tomcat安装目录的conf文件夹下,是虚拟主机的核心配置文件。关键步骤如下:
<Engine>标签<Engine>标签是Servlet引擎的容器,所有虚拟主机需在其内部配置。默认包含一个defaultHost(默认虚拟主机,通常为localhost)。
<Host>标签每个<Host>标签代表一个虚拟主机,需设置以下关键属性:
www.example.com),需与DNS解析或hosts文件中的域名一致;webapps/example1),需为绝对路径;true/false,建议开启);true/false,建议开启)。<Alias>:虚拟主机的别名(如example.com),可添加多个;<Context>:配置具体应用的路径和文档根目录(path为空字符串表示默认应用,docBase指向应用目录或WAR文件);<Valve>:添加访问日志(如记录访问时间、IP、请求路径等)。<Engine name="Catalina" defaultHost="localhost">
<!-- 默认虚拟主机(localhost) -->
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log"
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<!-- 虚拟主机1:www.example1.com -->
<Host name="www.example1.com" appBase="webapps/example1" unpackWARs="true" autoDeploy="true">
<Alias>example1.com</Alias>
<Context path="" docBase="example1" reloadable="true"/>
</Host>
<!-- 虚拟主机2:www.example2.com -->
<Host name="www.example2.com" appBase="webapps/example2" unpackWARs="true" autoDeploy="true">
<Alias>example2.com</Alias>
<Context path="" docBase="example2" reloadable="true"/>
</Host>
</Engine>
<Connector>标签的port属性(需root权限):<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateFile="/path/to/certificate.cer"
certificateKeyFile="/path/to/private.key" />
</SSLHostConfig>
</Connector>
将Web应用放置到对应虚拟主机的appBase目录下:
appBase为webapps/example1,可将WAR文件复制到该目录(如cp myapp1.war /path/to/tomcat/webapps/example1/),Tomcat会自动解压;mkdir /path/to/tomcat/webapps/example1),将解压后的应用文件放入。修改配置后,需重启Tomcat使更改生效:
# 进入Tomcat bin目录
cd /path/to/tomcat/bin
# 停止Tomcat
./shutdown.sh
# 启动Tomcat
./startup.sh
或使用systemctl(Linux系统):
sudo systemctl restart tomcat
http://www.example1.com、http://www.example2.com,应显示对应应用的内容;tomcat或root)对appBase目录及其中的文件有读取权限;logs目录下的访问日志(如localhost_access_log.txt)排查访问问题;