tomcat - Apache Tomcat 5.5 不同上下文的别名

标签 tomcat virtualhost

我正在使用 tomcat 5.5,我想执行以下操作:

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

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

分别

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

如果我在引擎中使用不同的主机并提供​​别名(如文档所述),那么别名 URL 可以正常工作,但相关 URL 则不行。为了让它们都能正常工作,我需要一个额外的主机“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 正在加载每个上下文两次。还有其他方法可以实现吗?

最佳答案

它确实会加载应用程序两次,因为您是这样配置的。您需要在 tomcat 前面有一个 apache httpd 实例来执行一些 url 重写魔术。

关于tomcat - Apache Tomcat 5.5 不同上下文的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2094205/

相关文章:

hibernate - 升级到 Postgres 9.2(包括 Hibernate)和 Tomcat 7

java - 信息 : Additional JARs have been added : 'xalan-2.7.0.jar'

spring-boot - java spring boot - war 文件未部署在 Apache Tomcat 上

Java jconsole 应用程序的名称

nginx 缺少站点可用目录

tomcat - 部署:将库 jar 与我自己的类分开

ubuntu - Apache2 虚拟主机缺少文档根目录

django - 我在哪里复制我的 Apache docker 镜像中的 VirtualHost 指令?

apache - 我如何让 Apache 知道哪个应用程序目录用于不同的域?

javascript - Apache2 虚拟主机错误