2011-07-25 2 views
3

Je crée une application multi-locataire comme shopify et je veux savoir comment puis-je créer un domaine personnalisé sur un serveur qui pointe vers la même instance d'application? Par exemple:multi-locataire avec domaine personnalisé sur rails

app1.mysystem.com == www.mystore.com 
app2.mystem.com == www.killerstore.com 

je dois faire config sur CNAME comme Google Apps? Si oui, comment puis-je faire cela? Y a-t-il du bon papier montrant comment cela fonctionne?

PS: app1 ET app2 pointe vers la même application! Merci

Répondre

6

J'ai une configuration similaire et j'utilise nginX. Ce que j'ai fait pour la facilité de maintenance a été accepté toutes les connexions de nginx et a fait le filtrage dans mon application.

# application_controller.rb 
before_filter :current_client 

private 
def current_client 
    # I am using MongoDB with Mongoid, so change the syntax of query accordingly 
    @current_client ||= Client.where(:host => request.host).first 
    render('/public/404.html', :status => :not_found, :layout => false) unless @current_client 
end 

Vous pouvez avoir vos clients ont un dossier de domaine avec il Pointage du domaine/sous-domaine you_ip ou your_domain_pointing_to_your_ip.com et la capture que sous une forme et enregistrée dans la base de données. Puis modifier la requête en current_client aime:

@current_client ||= Client.or(:host => request.host).or(:alias => request.host).first 
+0

Essayer de faire la même chose mais pas 100% sûr comment accepter toutes les connexions. Pouvez-vous poster votre nginx conf? –

0

Je travaille actuellement à travers quelque chose de similaire et juste fait la configuration Nginx. C'est comme ça que je l'ai fait.

server { 
    listen 80; 
    server_name domain1.com domain2.com domain3.com; 
    rails_env production; 
    passenger_enabled on; 
    root /var/www/your_site_folder/current/public; 
} 

Assurez-vous également de lancer passenger_pre_start si vous utilisez un passager.

ex: passenger_pre_start http://your_domain.com;

Ajoutez une ligne pour chaque domaine que vous ajoutez dans le bloc de configuration ci-dessus.

La clé est ici sous nom_serveur. Normalement je l'utiliserais pour un domaine en utilisant www.domain.com ou sans le 'www', domain.com. Mais dans ce cas, vous pouvez pointer tous les domaines que vous voulez frapper votre application à partir d'ici et vous avez votre configuration Nginx pour la multi-location.

Questions connexes