【问题标题】:url redirection/mapping of the same java web application to multiple sub-domains将同一 java Web 应用程序的 url 重定向/映射到多个子域
【发布时间】:2011-04-25 02:23:27
【问题描述】:

我有一个域,比如 www.domain.com。我开发了一个 java web 应用程序,比如 jwa。现在我想使用子域为不同的客户端安装相同的应用程序,最好的解决方案是什么?

类似“client1.domain.com”的东西指向“client1”(重命名为 jwa)

我知道我们可以获取 client1.domain.com/client1/ 但 client1 两次并不好。或者至少我们可以在没有多个 tomcat 实例的情况下获得 client1.domain.com/jwa/ 吗?顺便说一句,我在同一台服务器上运行 apache http 服务器,并为 java/tomcat 应用程序使用“proxy_module”

问候

【问题讨论】:

    标签: tomcat apache2


    【解决方案1】:

    您不需要多个 Tomcat 实例 - 您可以跨多个子域指向多个客户端以使用同一个 Web 应用程序

    但请确保这符合您的业务用例 - 即您是否真的希望 web 应用程序的多个实例 运行,或者单个实例可以为您的所有客户端提供服务。

    我指的是品牌/徽标/共享数据/外观等 - 这在所有客户中都很常见吗?

    假设是这样。

    配置 Apache 后,正确的方法是使用 VirtualHost 指令和 mod_proxy。

    在 Apache 端这样的配置应该可以工作 - 每个子域创建一个,并将 ProxyPassProxyPassReverse 指向 Tomcat Web 应用程序

    <VirtualHost *:80>
      ServerName client1.domain.com
    
      ProxyRequests Off
      ProxyPreserveHost On
    
      <Proxy *>
        Order deny,allow
        Allow from all
      </Proxy>
    
      ProxyPass /jwa http://client1.domain.com:8080/jwa
      ProxyPassReverse /jwa http://client1.domain.com:8080/jwa
    </VirtualHost>
    

    相关阅读

    Apache 文档have lots of examples of VirtualHost configuration

    还有一个不使用 Apache httpd 的解决方案,您可以在 Tomcat server.xml 中配置主机整体,但 Apache 是管理您的域 URL 的更好地方

    【讨论】:

    • 感谢您的回复,但不同的客户有不同的外观和感觉。另外,我不想在 url 中显示 /jwa,而是说 client1.domain.com,它应该在内部指向 client1.domain.com/jwa。 (因为域本身就是网络应用名称)
    • @user237865:是的,可以做到。您必须将 /jwa 设置为 Tomcat 中每个域的默认 Web 应用程序,然后它不会显示在 URL 中。请参阅我之前的回答,了解如何实现这一点。stackoverflow.com/questions/3708077/…。在您的情况下,您需要为每个客户端提供不同的 /jwa webapp 副本,例如 jwaclient1、jwaclient2 等,因为您需要不同的功能。
    • 何塞,我试过你说的:在 apache http.conf >> ServerName client1.domain.com ProxyRequests Off ProxyPreserveHost On Order deny,allow Allow from all ProxyPass / client1.domain.com:8080 ProxyPassReverse / client1.domain.com:8080 在 tomcat server.xml ......但是当我尝试 client1.domain.com 时它仍然给出 404 错误,任何建议。
    • client1.domain.com:8080 是否直接命中 Tomcat 服务于您的 /jwa 应用程序?首先尝试解决这个问题,然后你应该从 Apache 中检查
    • 何塞:我试过这个 ,我可以在 webcontent 中看到 index.jsp,因此 client1.domain.com 正在识别。但是我在里面有一个文件夹管理员(管理模块),我使用根目录中的几个文件作为 /common/includes/header.jsp 它说“找不到文件”/common/includes/meta.jsp” - Jasper Exception .任何建议为什么错误以及如何解决它,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2016-04-05
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2013-08-23
    相关资源
    最近更新 更多