2011-06-15 7 views
15

Tenemos una aplicación Rails 3 que permite a los usuarios crear un perfil y acceder a él con un subdominio. Así, por ejemplo:Múltiples dominios que apuntan a una sola aplicación Heroku Rails a través de servidores de nombres que muestran contenido diferente?

  • user1.app.com
  • user2.app.com
  • user3.app.com

Ahora, supongamos que querían señalar su propio nombre de dominio a su perfil, por lo www.user1.com muestra user1.app.com, y www.user1.com/my-content/ muestra user1.app.com/my-content/. ¿Es posible que simplemente cambien sus servidores de nombres para señalarnos y nosotros manejamos el enrutamiento? Me temo que sería un factor decisivo si el usuario tuviera que hacer alguna configuración DNS más allá de simplemente cambiar sus servidores de nombres.

Gracias!

Respuesta

11

que necesita para obtener de ellos en primer lugar se los puso www.user1.com para apuntar a proxy.heroku.com (o configurar su propia entrada CNAME a proxy.heroku.com y hacer que cnombren sus dominios para eso) y luego necesita registrar su dominio personalizado con su aplicación heroku para que la aplicación correcta responda en Heroku almacenada en su cuenta. en su aplicación para que pueda coincidir con las solicitudes entrantes.

Esta técnica se emplea en el rieles de locomotoras CMS así que te sugiero que mirar - que utiliza la gema Heroku DENTRO la aplicación para dominios personalizados se pueden agregar mediante el administrador del sitio que a su vez se comunica con el API de Heroku para agregar el dominio personalizado a la aplicación.

+0

Si el dominio del usuario ya está registrado con otra aplicación heroku, esto es imposible ¿no? – stuartchaney

14

Esto es realmente dos preguntas. Así que supongo que lo responderé así.

¿Cómo puedo permitir que los clientes agreguen un dominio personalizado a mi aplicación basada en heroku?

Así, en su ejemplo, su nombre de dominio es www.user1.com

Dos cosas tienen que suceder

  1. www.user1.com necesidades que se añade a sus dominios Heroku para la aplicación
  2. el DNS para www.user1.com debe establecerse en los servidores heroku

Para agregar este nuevo domai n, supongo que necesita almacenar el dominio personalizado en la aplicación, y cuando se modifique o cree, asegúrese de que una tarea en cola esté configurada para hacer que esta configuración cambie a heroku.

Para hacer los DNS correctamente, espero que sea suficiente que agreguen un CNAME para user1.app.com. Por lo tanto, si tiene un comodín CNAME que enlaza con dns de heroku, puede evitar el tipo de tiempo de inactividad que puede ocurrir si Heroku recibe DOS-ed nuevamente.

¿Cómo puedo mostrar contenido basado en el dominio, en lugar de solo el subdominio?

Bueno, de alguna manera ya diferenciar user1.app.com de user2.app.com

Tal vez lo que olfateó request.host. Ahora solo tienes que probar el dominio personalizado primero.

Quizás esto funcione.

before_filter :set_client 

def set_client 
    @client = Client.find_by_custom_domain(request.host) || Client.find_by_subdomain(request.host.split(".").first) 
    unless @client 
    raise "unrecognised domain #{request.host}" 
    end 
end 
+0

Esto fue realmente útil. ¡Gracias! –

Cuestiones relacionadas