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

her*_*rom 6 java tomcat reverse-proxy

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

所以,我有以下两个WAR我以s webapps文件夹:

webapps
|
+- BloggofantAuthentication
|
+- Bloggofant
Run Code Online (Sandbox Code Playgroud)

到现在为止他们可以在http://127.0.0.1:8080/BloggofanAuthenticationhttp://127.0.0.1:8080/Bloggofant.是否有可能代理WAR在Tomcat的小号直接(这样我就不必使用Apache httpd及其mod_proxy模块)?因此,最终,WAR服务器上的s可以如下访问:

  • 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/

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

编辑

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

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

如果我现在想要访问我的应用程序,http://127.0.0.1:8080或者http://127.0.0.1:8080/bloggofant我收到404 - 找不到页面错误...

Tom*_*son 3

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

<Context path="/bloggo/fant" />
Run Code Online (Sandbox Code Playgroud)

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

请注意文档中有关自动部署的警告:

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

在其他地方,文档告诉我们这些都默认为 true。因此,您需要将它们设置为 false 才能遵守这些设置。