【问题标题】:apache tomcat frontingapache tomcat前端
【发布时间】:2012-05-16 15:01:11
【问题描述】:

是否可以为单个 Web 应用程序指定多个上下文路径? 例如,我有一个在端口 8080 上运行的 tomcat 应用程序 myapp。我想在前面使用 apache,以便 localhost/app1 或 localhost/app2 都被路由到 tomcat 中的 myapp 如何实现这一点?我不想使用重定向

【问题讨论】:

    标签: tomcat


    【解决方案1】:

    没有。无法为同一个应用程序定义 2 条路径。您可以为同一个 WAR 指定 2 个路径,但它仍然是同一个应用程序的 2 个实例。

    但是,您可以将应用程序定义为 ROOT 并检查代码中的路径。例如,将您的应用程序放在 webapps/ROOT 中并将此逻辑添加到您的 servlet,

    String path = request.getPathInfo();
    
    if (path.indexOf("/app1") >= 0)
       app1(request, response);
    else if (path.indexOf("/app2") >= 0)
       app2(request, response);
    

    【讨论】:

    • 嗨,感谢您的响应。但我不想修改我的应用程序,但想修改 httpd.conf 以便将请求路由到 tomcat
    【解决方案2】:

    是的,您可以在 Apache Web 服务器设置上执行此操作。此选项与 Tomcat 无关。您可以对 Apache Web Server 后面的任何应用程序服务器执行此操作,无论是 Tomcat、Jetty,甚至是另一个运行 PHP 脚本或静态页面的 Apache Web Server。

    实际设置取决于您使用哪种方法将 Apache Web Server 连接到 Tomcat。

    例如,如果您使用 mod_proxy,配置将如下所示:

    ProxyPass /app1 http://192.168.11.25:8080/myapp
    ProxyPassReverse /app1 http://192.168.11.25:8080/myapp
    ProxyPass /app2 http://192.168.11.25:8080/myapp
    ProxyPassReverse /app2 http://192.168.11.25:8080/myapp
    

    我刚刚在我的机器上尝试了上述设置,以在 2 个不同的前端 URL 中公开相同的 WebDAV Subversion。

    您的应用程序是否真的支持这一点,那就是另一回事了。如果您的应用程序需要指定前端 URL,并且您正在使用 mod_proxy,例如安装像 Atlassian Confluence 这样的应用程序,这根本不起作用。如果您的应用程序不需要它,那就太好了。

    但您始终可以通过创建复杂的 URL 重写 (mod_rewrite) 来降低级别,该方法也应该能够解决该问题。

    您需要注意的另一件事是您的应用程序处理会话、URL、原始 IP 地址等的方式。如果它不支持这些并且您无法修改应用程序,那么您就会陷入困境。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多