2010-09-05 4 views
2

Je veux implémenter quelque chose comme Tumblr ou Wordpress en donnant à l'utilisateur l'option de faire pointer son nom de domaine sur son profil. Par exemple, l'utilisateur se rendra à son bureau d'enregistrement de domaine et à l'adresse IP de mon serveur: www.usersdomain.com pointera sur www.mysite.com/userid sans transférer réellement le nom de domaine dans la barre d'adresse.Comment faire pour que les utilisateurs aient un nom de domaine pointant vers leur profil sur mon site

Je souhaite que vous puissiez décrire les détails des étapes à suivre pour le faire. J'utilise Ruby on Rails si cela fait une différence. Mon environnement de production comprend Nginx et Passenger.

Répondre

3

Mon point de vue:

  1. utilisateurs modifier les enregistrements DNS de leurs sites pour pointer vers l'adresse IP de votre serveur. Après cette opération, chaque requête HTTP vers leurs domaines sera "interceptée" par votre adresse IP et votre application (vous devez reconfigurer votre serveur HTTP, cependant).
  2. Chaque requête HTTP contient l'en-tête Host. Cet en-tête nous permet de faire une chose telle que l'hébergement virtuel: de nombreux hôtes peuvent pointer vers une seule adresse IP;
  3. Dans votre application, il suffit d'extraire Host de la requête et d'interroger votre base de données pour l'utilisateur avec un tel hôte.
  4. Videz le contenu de sa page et c'est tout.

Par exemple, IP de votre service est 100.100.100.100, mon domaine est redsocks.com. J'ai besoin de changer DNS (un enregistrement A) de mon domaine pour pointer vers votre adresse IP. Supposément, je l'ai fait.

Quand je pointe mon navigateur à mon domaine, le navigateur fait la demande suivante (ou similaire) pour votre propre adresse IP, pas le mien:

GET/HTTP/1.1 
Host: redsocks.com 
... 

Votre application a le code (pseudo-code) qui traite avec ma demande:

user = User.find_by_domain(REQUEST["Host"]) 
if user == nil 
    render_not_found_page 
else 
    contents = Content.get_contents_of_user(user) 
    render_contents_of_user contents 
end 

Et je vois ma propre page dans votre service sur mon domaine.

Questions connexes