使用Apache Tomcat 5.5的不同上下文的别名

时间:2010-01-19 14:42:21

标签: tomcat virtualhost

我正在使用tomcat 5.5,我想做以下事情:

如果部署了两个Web应用程序(让它们 foo bar ),我希望能够通过相对路径和别名访问它们。

localhost:8080 / foo - > foo和 foo.example.com - > FOO

localhost:8080 / bar - >栏和 bar.example.com - >杆

如果我在引擎中使用不同的主机并提供​​别名 - 按照文档规定 - 那么别名的网址可以正常工作,但不是相关网址。为了使它们都正常工作,我需要一个额外的主机“localhost”并再次声明相同的上下文。这是我的server.xml

<Engine name="Catalina" defaultHost="localhost">
    <Host name="foo.example.com">
        <Context docBase="webapps/foo" path="" workDir="work/Catalina/foo/_"/>
        <Alias>foo.example.com</Alias>
    </Host>
    <Host name="bar.example.com">
        <Context docBase="webapps/bar" path="" workDir="work/Catalina/bar/_"/>
        <Alias>bar.example.com</Alias>
    </Host>
    <Host name="localhost" appBase="webapps" autoDeploy="false" >
        <Context path="foo" workDir="work/Catalina/foo/_" />
        <Context path="bar" workDir="work/Catalina/bar/_" />
    </Host>
</Engine

虽然它以这种方式工作,但似乎tomcat正在加载每个上下文两次。还有其他方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:1)

它确实加载了两次应用程序,因为你是这样配置的。你需要在tomcat前面使用一个apache httpd实例来做一些url重写魔法。