Grails和子域名

Ray*_*Ray 6 grails grails-2.0

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

Chr*_*ris 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.
                }
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

    但是,如果它变得更复杂,请查看一些用于grails的多租户插件.

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