Grails and Subdomains

后端 未结 3 1450
南旧
南旧 2021-02-04 19:12

Does Grails know anything about sub-domains (i.e. subdomain.domain.com) ? I don\'t see it discussed in the manual. Is this purely an app server/web server issue? Can be ti

相关标签:
3条回答
  • 2021-02-04 19:22

    We run a few Grails apps on a single host using various sub domains. In all cases we use Apache to front the Tomcat server and use mod jk or forward proxy to handle the applications to the different Grails app. Most of it is rather straight forward, what we have not figured out is running the applications at the root level for the various domains, for instance - http://app1.domain.com instead of http://app1.domain.com/app1

    0 讨论(0)
  • 2021-02-04 19:31

    The only place I'm aware of subdomains being considered is for tenant resolution when using the multi-tenant plugin. See http://tinyurl.com/6tuxwvs.

    0 讨论(0)
  • 2021-02-04 19:44

    It does not matter which host is accessed for a java web application.

    1. Supposing you have multiple clients separated on one host, e.g. customer1.yourhost.com, customer2.yourhost.com, etc. and all clients will have same functionalities.

      In the simplest case I propse, that you just use write a filter, which will always put some request variable, like this:

      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.
                  }
              }
          }
      }
      

      Then at any place you can check request.currentClient for the current accessed subdomain.

      However if it gets more complicated have a look at some multi-tenant plugins for grails.

    2. If you want to have different functionalities for each subdomain e.g. help.yourhost.com and www.yourhost.com, I would propose that you write independent grails applications. You then setup a NGINX server to redirect those requests to the appropriate application running on your application server.

    0 讨论(0)
提交回复
热议问题