2010-07-15 9 views
8

J'ai une application rails où les clients s'inscrire et obtenir un site sous-domaine personnalisé/url comme ceci:Comment autoriser les sites de sous-domaines des clients d'utiliser leur propre domaine

  • customer1.myapp.com
  • client2. myapp.com
  • customer3.myapp.com

Quelles sont les étapes que je dois prendre pour permettre à un client d'utiliser leur propre nom de domaine enregistré de telle sorte que leurs points de domaine à mon application? Donc, dans l'exemple ci-dessus, si "customer1" possède "customer1.com" - comment puis-je configurer mon application de sorte que toutes les demandes à "customer1.com" soient envoyées à "customer1.myapp.com"? Aussi, qu'est-ce que mon client devrait faire de son côté?

Merci.

Répondre

6

Votre client aura besoin de configurer DNS Pour que son domaine le pointe, ou une partie de celui-ci, à votre adresse. Cela peut être difficile à coordonner, surtout si l'adresse du serveur sur lequel vous hébergez le service peut changer de temps en temps. Il est beaucoup plus facile de router le sous-domaine d'un client vers votre sous-domaine.

Vous aurez également besoin d'une table de correspondance qui mappe le domaine d'un client sur le compte d'un client. C'est généralement exprimé en quelque chose comme ceci:

before_filter :load_customer_from_host 

def load_customer_from_host 
    # Strip "www." from host name to search only by domain. 
    hostname = request.host.sub(/^www\./, '') 

    @customer = Customer.find_by_host!(hostname) 
rescue ActiveRecord::RecordNotFound 
    render(:partial => 'customer_not_found', :layout => 'application', :status => :not_found) 
end 

que vous avez un modèle suppose client avec un « hôte » champ régler de cette « customer1.myapp.com » ou « customer1.com », quel que soit correspond à l'hôte champ. Lorsque vous configurez votre application, vous devez disposer d'une configuration d'hôte virtuel répondant à tous les noms de domaine arbitraires. C'est facile à faire si c'est le seul site hébergé, puisque c'est le comportement par défaut. Si vous faites cela sur un hébergement partagé, vous devrez peut-être configurer un alias spécifique à chaque domaine client, ce qui peut être gênant.