我正在创建一个像shopify这样的多租户应用程序,并且想知道如何在服务器上创建指向同一应用程序实例的自定义域? 例如:
app1.mysystem.com == www.mystore.com
app2.mystem.com == www.killerstore.com
我需要在像Google Apps这样的CNAME上进行配置吗?如果是这样,我该怎么做?是否有一些好文章展示了它的工作原理?
PS:app1和app2指向同一个应用程序! 感谢
答案 0 :(得分:6)
我有类似的设置,我正在使用nginX。我为了便于维护而做的是接受了来自nginx的所有连接并在我的应用程序中进行了过滤。
# 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
您可以让您的客户拥有域/子域指向you_ip
或your_domain_pointing_to_your_ip.com
的域记录,并在表单中捕获并保存在数据库中。然后在current_client
中更改查询,如:
@current_client ||= Client.or(:host => request.host).or(:alias => request.host).first
答案 1 :(得分:0)
我目前正在研究类似的东西,只是做了Nginx配置。这就是我做的方式。
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;
}
如果您正在使用乘客,请确保运行passenger_pre_start。
例如:passenger_pre_start http://your_domain.com;
为您添加到上述配置块中的每个域添加一行。
此处的密钥位于server_name下。通常情况下,我会使用www.domain.com或没有'www',domain.com将其用于域名。但在这种情况下,您可以从此处指向您想要点击应用的所有域名,并且您可以使用Nginx进行多租户设置。