如何在Tomcat 7中代理不同的WAR?

时间:2013-10-24 13:52:18

标签: java tomcat reverse-proxy

我正在开发一个Web应用程序,它由两个独立的部分组成 - 身份验证真实应用程序部分。这两个部分都是WAR,它们部署在(当前)一个Tomcat 7实例上。

所以,我的WAR文件夹中有以下两个webapps

webapps
|
+- BloggofantAuthentication
|
+- Bloggofant

直到现在,http://127.0.0.1:8080/BloggofanAuthenticationhttp://127.0.0.1:8080/Bloggofant都可以使用它们。是否可以代理直接在Tomcat上WAR(这样我就不必使用Apache httpd及其mod_proxy模块了?因此,最终,服务器上的WAR可以按如下方式访问:

  • http://127.0.0.1:8080/BloggofantAuthentication - > http://127.0.0.1/bloggo/
  • http://127.0.0.1:8080/Bloggofant - > http://127.0.0.1/bloggo/fant/

对此主题的任何建议都非常感谢;)

修改

以下是两个解压缩的webapp WAR文件夹的context.xml个文件:

web应用/ BloggofantAuthentication / META-INF / context.xml中

<?xml version="1.0" encoding="UTF-8"?>
<Context path="">
    <!-- Comment this to enable session persistence across Tomcat restarts -->
    <Manager pathname=""/>
</Context>

web应用/ Bloggofant / META-INF / context.xml中

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/bloggofant">
    <!-- Comment this to enable session persistence across Tomcat restarts -->
    <Manager pathname=""/>
</Context>

如果我现在想通过http://127.0.0.1:8080http://127.0.0.1:8080/bloggofant访问我的应用,则会收到 404 - 找不到页面错误...

1 个答案:

答案 0 :(得分:3)

您可以使用context.xml file配置Tomcat为Web应用程序提供服务的路径。您可以将其放在WAR的META-INF目录中,其内容为:

<Context path="/bloggo/fant" />

它将在那里提供,而不是默认的/Bloggofant路径。

请注意文档中的warning about automatic deployment

  

当主机执行autoDeploy或deployOnStartup操作时,Web应用程序的名称和上下文路径是从定义Web应用程序的文件的名称派生的。因此,可能无法在应用程序中嵌入的META-INF / context.xml中定义上下文路径

在其他地方,文档告诉我们these both default to true。因此,您需要将它们设置为false才能使这些设置得到尊重。