Grails和子域名

时间:2012-02-11 17:52:18

标签: grails grails-2.0

Grails是否了解有关子域的任何信息(即subdomain.domain.com)?我没有在manual中看到它的讨论。这纯粹是一个应用服务器/ Web服务器问题吗?可以静态地还是动态地绑定到grails控制器中?

3 个答案:

答案 0 :(得分:10)

为Java Web应用程序访问哪个主机无关紧要。

  1. 假设您在一台主机上分隔了多个客户端,例如customer1.yourhost.com,customer2.yourhost.com等,所有客户都具有相同的功能。

    在最简单的情况下,我建议你只使用写一个过滤器,它总会放一些请求变量,如下所示:

    def filters = {
        all(controller:'*', action:'*') {
            before = {
                if (request.serverName.contains(".")) {
                    def clientName = 
                      request.serverName.substring(0, request.serverName.indexOf("."))
    
                    request.currentClient = Client.findByClientName(clientName) // e.g.
                }
            }
        }
    }
    

    然后,您可以在任何地方检查request.currentClient当前访问的子域名。

    然而,如果它变得更复杂,请查看一些用于grails的多租户插件。

  2. 如果您希望每个子域具有不同的功能,例如help.yourhost.com和www.yourhost.com,我建议您编写独立的grails应用程序。然后,您可以设置NGINX服务器,将这些请求重定向到应用程序服务器上运行的相应应用程序。

答案 1 :(得分:1)

我们使用各种子域在单个主机上运行一些Grails应用程序。在所有情况下,我们使用Apache来引导Tomcat服务器并使用mod jk或转发代理来处理不同Grails应用程序的应用程序。其中大部分都是直截了当的,我们还没想到的是在各个域的根级别运行应用程序,例如 - http://app1.domain.com代替http://app1.domain.com/app1

答案 2 :(得分:0)

在使用多租户插件时,我唯一知道要考虑子域名的地方是租户解析。请参阅http://tinyurl.com/6tuxwvs