2012-02-11 2 views
6

Знает ли что-нибудь о сублимингах (например, subdomain.domain.com) ли Grails? Я не вижу, чтобы это обсуждалось в manual. Это просто проблема сервера приложений/веб-сервера? Может быть привязан к контроллерам Грааля, статически или динамически?Grails and Subdomains

ответ

10

Не имеет значения, к какому хосту обращается к веб-приложению Java.

  1. Предположим, что у вас несколько клиентов, разделенных на один хост, например. customer1.yourhost.com, customer2.yourhost.com и т. д., и все клиенты будут иметь одинаковые функциональные возможности.

    В простейшем случае я propse, что вы просто использовать написать фильтр, который всегда будет ставить некоторую переменную запроса, как это:

    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 для перенаправления этих запросов в соответствующее приложение, запущенное на вашем сервере приложений.

+0

Спасибо за нарушение проблемы и показывая различные решения. У вас есть какие-то соображения относительно разбивки субдомена на https, так что у вас есть secure.mydomain.com в режиме SSL? Безопасность канала с защитой от первичной безопасности (http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#17%20Channel%20Security) здесь ограничена. – Ray

+0

Итак, у вас есть www.mydomain.com и вы хотите перейти на secure.mydomain.com, когда пользователь входит в систему? Я вижу самую большую проблему с помещением файла cookie для другого хоста secure.mydomain.com. Однако, хотя я еще не пробовал, но достаточно настроить весеннюю безопасность для перенаправления на абсолютный URL, установив «grails.plugins.successHandler.defaultTargetUrl» на правильное значение? – Chris

+0

Моя текущая потребность - сделать сайт безопасным только во время проверки продукта/услуги, где я обрабатываю кредитные карты. После этого обработка вернется к URL-адресу, отличному от SSL. То, как сайт в настоящее время разработан, пользователь входит в систему с его тележкой, чтобы увидеть, какие скидки он получает. Оттуда я перехожу на SSL после того, как он проверит с его тележкой, а затем, когда будет получена/сделана обработка виз/mc, вернитесь к не-SSL. – Ray

0

Единственное, что мне известно о рассматриваемых поддоменах, - это разрешение арендатора при использовании плагина с несколькими арендаторами. См. http://tinyurl.com/6tuxwvs.

1

Мы запускаем несколько приложений Grails на одном хосте, используя различные поддомены. Во всех случаях мы используем Apache для управления сервером Tomcat и используем mod jk или forward proxy для обработки приложений в другом приложении Grails. Большинство из них довольно прямо вперед, что мы еще не выяснили, работают приложения на корневом уровне для различных областей, например - http://app1.domain.com вместо http://app1.domain.com/app1

+2

Чтобы настроить в качестве корневого контекста, вам нужно будет изменить Config.groovy для использования grails.app.context = "/" –