Grails 和子域

标签 grails grails-2.0

Grails 是否了解子域(即 subdomain.domain.com)?我没有在 manual 中看到它的讨论。 .这纯粹是一个应用服务器/网络服务器问题吗?可以静态或动态绑定(bind)到 grails Controller 中吗?

最佳答案

对于 Java Web 应用程序,访问哪个主机并不重要。

  • 假设您在一台主机上分离了多个客户端,例如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 的 Multi-Tenancy 插件。
  • 如果您想为每个子域提供不同的功能,例如help.yourhost.com 和 www.yourhost.com,我建议你编写独立的 grails 应用程序。然后,您设置 NGINX 服务器以将这些请求重定向到在您的应用程序服务器上运行的相应应用程序。
  • 关于Grails 和子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242527/

    相关文章:

    grails - 防止 Grails Controller 中的方法暴露为操作

    html - 如何在<g:select>或<select>标记中显示也是 map 的 map 的值?

    rest - 使用Grails中的Rest查找特定ID

    maven - EAR 的 Grails Maven 包装

    grails - 如何更新 grails 域对象列表上的属性?

    java - War文件无法在Tomcat 7上部署

    grails - Grails:fields-1.2插件无法读取数据模型属性

    grails - 创建表失败

    chalice : getting assets local storage path inside the controller

    grails - 如何使用 config.groovy 中定义的属性初始化域类的变量