2012-02-11 7 views
6

¿Sabe Grails algo sobre subdominios (es decir, subdomain.domain.com)? No lo veo discutido en el manual. ¿Es este un problema de servidor de aplicaciones/servidor web? ¿Se puede vincular a controladores de grails, ya sea estática o dinámicamente?Grails and Subdominios

Respuesta

10

No importa a qué host se accede para una aplicación web java.

  1. Supongamos que tiene varios clientes separados en un host, p. customer1.yourhost.com, customer2.yourhost.com, etc. y todos los clientes tendrán las mismas funcionalidades.

    En el caso más sencillo que proponer, a que sólo tiene que utilizar escribir un filtro, que siempre va a poner un poco variable de petición, así:

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

    A continuación, en cualquier lugar se puede comprobar request.currentClient para el subdominio visitada actual .

    Sin embargo, si se vuelve más complicado, eche un vistazo a algunos plugins multi-tenant para griales.

  2. Si desea tener diferentes funcionalidades para cada subdominio, p. help.yourhost.com y www.yourhost.com, le propondría que escriba aplicaciones independientes de Grails. A continuación, configura un servidor NGINX para redirigir esas solicitudes a la aplicación apropiada que se ejecuta en su servidor de aplicaciones.

+0

Gracias por romper el problema y mostrando varias soluciones. ¿Tiene alguna idea sobre cómo dividir un subdominio para https, de modo que uno tenga secure.mydomain.com en modo SSL? La seguridad del canal Spring-security-core (http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#17%20Channel%20Security) parece limitada aquí. – Ray

+0

Entonces, ¿tiene www.midominio.com y quiere cambiar a secure.midominio.com, cuando el usuario inicia sesión? Veo el mayor problema con poner la cookie para el diferente host secure.mydomain.com. Sin embargo, aunque no lo he intentado, basta con configurar la seguridad de primavera para redirigir a una URL absoluta estableciendo 'grails.plugins.successHandler.defaultTargetUrl' en el valor correcto. – Chris

+0

Mi necesidad actual es hacer que el sitio sea seguro solo durante el pago del producto/servicio, donde proceso las tarjetas de crédito. Una vez hecho el procesamiento, regrese a una URL que no sea SSL. La forma en que el sitio está diseñado actualmente, el usuario está iniciando sesión con su carrito, solo para ver qué descuentos obtiene. A partir de ahí, voy a SSL después de que haga un check out con su carrito, y luego cuando el proceso de visa/mc es recogido/hecho, regrese a no SSL. – Ray

0

El único lugar que conozco de los subdominios que se consideran es para la resolución del inquilino cuando se utiliza el complemento de varios inquilinos. Ver http://tinyurl.com/6tuxwvs.

1

Ejecutamos algunas aplicaciones de Grails en un solo host usando varios subdominios. En todos los casos usamos Apache para dirigir el servidor Tomcat y usamos mod jk o forward proxy para manejar las aplicaciones a la aplicación diferente de Grails. La mayor parte es bastante sencillo, lo que no hemos descubierto está ejecutando las aplicaciones a nivel de la raíz de los diversos dominios, por ejemplo - http://app1.domain.com en lugar de http://app1.domain.com/app1

+2

Para configurar como contexto raíz, deberá cambiar Config.groovy para usar grails.app.context = "/" –