The Apache Tomcat Servlet/JSP Container

Apache Tomcat 6.0

Apache Logo

Apache Tomcat 6.0

Virtual Hosting and Tomcat


For the sake of this how-to, assume you have a development host with two host names, ren and stimpy. Let's also assume one instance of Tomcat running, so $CATALINA_HOME refers to wherever it's installed, perhaps /usr/local/tomcat.

Also, this how-to uses Unix-style path separators and commands; if you're on Windows modify accordingly.


At the simplest, edit the Engine portion of your server.xml file to look like this:

<Engine name="Catalina" defaultHost="ren">
    <Host name="ren"    appBase="webapps/ren"/>
    <Host name="stimpy" appBase="webapps/stimpy"/>

Consult the configuration documentation for other attributes of the Engine and Hostelements.

Webapps Directory

Create directories for each of the virtual hosts:

mkdir $CATALINA_HOME/webapps/ren
mkdir $CATALINA_HOME/webapps/stimpy
Configuring Your Contexts
Approach #1

Within your Context, create a META-INF directory and then place your Context definition in it in a file named context.xml. i.e. $CATALINA_HOME/webapps/ren/ROOT/META-INF/context.xml This makes deployment easier, particularly if you're distributing a WAR file.

Approach #2

Create a structure under $CATALINA_HOME/conf/Catalina corresponding to your virtual hosts, e.g.:

mkdir $CATALINA_HOME/conf/Catalina/ren
mkdir $CATALINA_HOME/conf/Catalina/stimpy

Note that the ending directory name "Catalina" represents the name attribute of the Engine element as shown above.

Now, for your default webapps, add:


If you want to use the Tomcat manager webapp for each host, you'll also need to add it here:

cd $CATALINA_HOME/conf/Catalina
cp localhost/manager.xml ren/
cp localhost/manager.xml stimpy/
Further Information

Consult the configuration documentation for other attributes of the Context element.

Copyright © 1999-2006, Apache Software Foundation