Der*_*k J 16 ruby-on-rails heroku
我们有一个Rails 3应用程序,允许用户创建一个配置文件并使用子域访问它.例如:
现在,假设他们想将自己的域名指向他们的个人资料,因此www.user1.com显示user1.app.com,www.user1.com/my-content /显示user1.app.com/my-content/.他们是否可以简单地更改他们的名称服务器以指向我们,我们处理路由?如果用户除了更改名称服务器之外不得不进行任何DNS配置,我担心这将是一个交易破坏者.
谢谢!
Mat*_*udy 15
这真的是两个问题.所以我想我会这样回答.
如何允许客户将自定义域添加到基于heroku的应用程序?
因此,在您的示例中,他们的域名是 www.user1.com
有两件事需要发生
www.user1.com 需要添加到您的应用程序的heroku域www.user1.com需要将dns 设置为heroku服务器为了添加这个新域,我想你需要在应用程序中存储自定义域,当它被更改或创建时,确保设置排队任务以将此配置更改推送到heroku.
为了正确地完成dns,我希望他们添加一个CNAMEfor 就足够了user1.app.com.因此,如果您有一个链接到heroku的dns的通配符CNAME,则可以避免在Heroku再次进行DOS操作时可能发生的停机类型.
如何基于域显示内容,而不仅仅是子域?
好吧,不知何故,你已经user1.app.com从中脱颖而出user2.app.com
也许你只是闻了闻request.host.现在,您只需先尝试自定义域.
也许这会奏效.
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
Run Code Online (Sandbox Code Playgroud)
Joh*_*non 12
首先你需要让他们设置www.user1.com指向proxy.heroku.com(或者设置你自己的cname条目到proxy.heroku.com并让他们将域名命名为)然后你需要使用您的heroku应用程序注册他们的自定义域名,以便正确的应用程序响应他们的帐户存储的Heroku?在您的应用程序中,以便它可以匹配传入的请求.
这种技术在Locomotive Rails CMS中使用,所以我建议看一下 - 它使用Heroku gem INSIDE应用程序,因此可以通过站点管理员添加自定义域,后者又与Heroku API对话以添加自定义域应用程序.