如何以编程方式添加tomcat虚拟主机实例

时间:2014-01-08 10:31:16

标签: spring apache tomcat grails apache2

我在过去的两年里一直在为使用Grails的公司建立社交网络。

出现了一项新要求,即为每个拥有自己的用户,时间线等数据库的公司创建单独的虚拟主机(我希望避免重写所有服务层)

因此,最初应用程序在http://www.my-social-network.com上运行 现在使用我们必须开发的管理控制台,公司应该能够创建自己的子域,如下所示:http://company1.my-social-network.com等等。

我们使用的Web服务器是Apache 2.2 + tomcat 6

是否有人知道如何做到这一点?

理想情况下,我希望有一个应用程序实例接收具有不同主机名的请求,因此它可以表现不同以节省资源,因为Grails消耗了太多内存。 例如:

subdomain1.my-social-network.com - > apache 2 - > my-social-network.com(+特定标题) - > Tomcat的

如果可能的话,是否有办法根据请求参数或标题选择数据源?

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您可以采取多种不同的选择,但首先您需要决定如何在最低级别实施此项目:

  1. 您可以将请求发送到subdomain1.my-social-network.com并将用户redirect发送到my-social-network.com。
  2. 与上述相同,但请改用HTTP 302HTTP 303HTTP 307
  3. 只需显示网站内容,回复HTTP 200(可能是最好的方法,因为这些域名是永久性的)。更多文本假设此选项。
  4. 接下来,您需要servlet filter拦截所有HTTP流量并拥有地图{virtual_path -> real_site}。此过滤器可以在检测到已识别请求的虚拟路径时简单地设置相关request attribute(提示:servletRequest.setAttribute(String, Object))。

    如果用户创建/重命名/删除域/虚拟路径,您将相应地填充地图。

    最后,您的渲染组件应检查该参数并呈现相关网站。如果不了解有关应用程序如何工作的更多细节,就很难进一步详细说明。