2012-02-11 13 views
6

Grails는 하위 도메인 (예 : subdomain.domain.com)에 대해 알고 있습니까? 나는 그것이 manual에서 논의 된 것을 보지 못했다. 이것은 순수하게 응용 프로그램 서버/웹 서버 문제입니까? Grails 컨트롤러에 정적으로 또는 동적으로 연결할 수 있습니까?Grails 및 하위 도메인

답변

10

java 웹 응용 프로그램에 액세스 할 호스트는 중요하지 않습니다.

  1. 한 호스트에서 여러 개의 클라이언트가 분리되어 있다고 가정합니다. customer1.yourhost.com, customer2.yourhost.com 등이 있으며 모든 클라이언트는 동일한 기능을 갖습니다. 현재 액세스 하위 도메인에 대한 request.currentClient을 확인할 수있는 장소에서 그런

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

    : 당신은 그냥이 같은 항상 어떤 요청 변수를 넣어하는 필터를 작성 사용하는 것이 내가 propse 간단한 경우

    , .

    그러나 더 복잡한 경우 grails 용 멀티 테넌트 플러그인을 살펴보십시오.

  2. 각 하위 도메인마다 다른 기능을 원할 경우 help.yourhost.com 및 www.yourhost.com에서 독자적인 grails 응용 프로그램을 작성할 것을 제안합니다. 그런 다음 요청을 응용 프로그램 서버에서 실행중인 적절한 응용 프로그램으로 리디렉션하도록 NGINX 서버를 설정합니다.

+0

대신 http://app1.domain.com과 같이 문제를 해결하고 다양한 솔루션을 보여 주셔서 감사합니다. SSL 모드에서 secure.mydomain.com을 갖도록 https에 대한 하위 도메인을 분할하는 것에 대해 우연히 생각하십니까? 스프링 보안 코어 채널 보안 (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으로 전환 하시겠습니까? 다른 호스트 인 secure.mydomain.com에 쿠키를 저장하는 데 가장 큰 문제가 있습니다. 그러나 시도하지는 않았지만'grails.plugins.successHandler.defaultTargetUrl'을 적절한 값으로 설정하여 절대 URL로 리디렉션하도록 스프링 보안을 구성하는 것으로 충분합니까? – Chris

+0

현재 신용 카드를 처리하는 제품/서비스 체크 아웃 중에 만 사이트를 보안 상태로 유지해야합니다. 처리가 완료되면 비 SSL URL로 돌아갑니다. 사이트가 현재 설계된 방식으로 사용자는 장바구니를 사용하여 로그인하여 할인율을 확인합니다. 거기에서 장바구니로 체크 아웃 한 후 SSL로 이동 한 다음 비자/MC 처리가 수집/완료되면 비 SSL로 돌아갑니다. – Ray

0

멀티 테넌트 플러그인을 사용할 때 고려중인 하위 도메인은 입주자 해결을위한 유일한 곳입니다. http://tinyurl.com/6tuxwvs을 참조하십시오.

1

여러 하위 도메인을 사용하여 단일 호스트에서 몇 개의 Grails 앱을 실행합니다. 모든 경우에 우리는 Apache를 사용하여 Tomcat 서버를 시작하고 mod jk 또는 forward proxy를 사용하여 응용 프로그램을 다른 Grails 응용 프로그램으로 처리합니다. 대부분은 직설적인데, 우리가 알아 내지 못한 것은 다양한 도메인의 루트 수준에서 응용 프로그램을 실행하는 것입니다. 예를 들어 http://app1.domain.com/app1

+2

루트 컨텍스트로 설정하려면, config.groovy를 grails.app.context = "/"를 사용하도록 변경해야합니다. –

관련 문제