Tomcat 是一个开源的 Java Servlet 容器,用于处理 Web 应用程序。不同域名可以通过配置 Tomcat 来实现多个虚拟主机(Virtual Host),每个虚拟主机可以对应不同的域名。
Tomcat 支持基于域名的虚拟主机配置,主要有以下几种类型:
假设我们有两个域名 example1.com
和 example2.com
,我们希望在 Tomcat 上分别部署两个不同的应用程序。
server.xml
文件:<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactoryFactory" pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
</Realm>
<!-- 虚拟主机 example1.com -->
<Host name="example1.com" appBase="webapps1" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="app1" reloadable="true" />
</Host>
<!-- 虚拟主机 example2.com -->
<Host name="example2.com" appBase="webapps2" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="app2" reloadable="true" />
</Host>
</Engine>
</Service>
</Server>
mkdir -p webapps1/app1
mkdir -p webapps2/app2
将 app1.war
和 app2.war
分别放到 webapps1/app1
和 webapps2/app2
目录下。
example1.com
或 example2.com
。server.xml
配置错误。server.xml
文件中的配置,确保虚拟主机和上下文配置正确。领取专属 10元无门槛券
手把手带您无忧上云