Grails和子域

Grails和子域,grails,grails-2.0,Grails,Grails 2.0,Grails对子域(即subdomain.domain.com)了解吗?我不认为这在报告中被讨论过。这纯粹是应用程序服务器/web服务器问题吗?可以静态或动态地绑定到grails控制器中?我所知道的唯一考虑子域的地方是在使用多租户插件时租户解析。请参阅。对于java web应用程序,访问哪个主机并不重要 假设您在一台主机上有多个分开的客户端,例如customer1.yourhost.com、customer2.yourhost.com等,并且所有客户端都具有相同的功能 在我建议的最简单的情况下,

Grails对子域(即subdomain.domain.com)了解吗?我不认为这在报告中被讨论过。这纯粹是应用程序服务器/web服务器问题吗?可以静态或动态地绑定到grails控制器中?

我所知道的唯一考虑子域的地方是在使用多租户插件时租户解析。请参阅。

对于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的多租户插件

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


  • 我们使用不同的子域在单个主机上运行一些Grails应用程序。在所有情况下,我们都使用Apache来前置Tomcat服务器,并使用mod jk或forward proxy来处理不同Grails应用程序的应用程序。大部分内容都相当直截了当,例如,我们没有弄清楚的是,在不同域的根级别运行应用程序-
    而不是

    感谢您解决问题并展示各种解决方案。您是否偶然想到了拆分https的子域,以便在SSL模式下拥有secure.mydomain.com?Spring security核心通道安全性()在这里似乎受到限制。所以您有www.mydomain.com,希望在用户登录时切换到secure.mydomain.com?我看到了将cookie放在不同主机secure.mydomain.com上的最大问题。然而,虽然我还没有尝试过,但通过将
    grails.plugins.successHandler.defaultTargetUrl
    设置为正确的值,配置spring security重定向到绝对URL就足够了。我当前的需要是,仅在处理信用卡的产品/服务签出期间,确保网站的安全。处理完成后,返回到非SSL URL。按照网站目前的设计方式,用户使用购物车登录,只是为了看看他能得到什么折扣。从那里,我在他用购物车签出后转到SSL,然后在收集/完成visa/mc处理后,返回到非SSL。我想最好是为这个用例明确地打开一个新问题。我不知道在切换子域时如何处理客户端的cookie。抱歉。若要在yorhosts文件中执行一些条目,如
    127.0.0.1 asdf.localhost.de
    127.0.0.1 www.localhost.de
    若要配置为根上下文,您需要更改Config.groovy以使用grails.app.context=“/”