【问题标题】:Multiple domains pointing to single Heroku Rails app via nameservers displaying different content?多个域通过显示不同内容的名称服务器指向单个 Heroku Rails 应用程序?
【发布时间】:2011-06-15 16:21:25
【问题描述】:

我们有一个 Rails 3 应用程序,它允许用户创建配置文件并使用子域访问它。比如:

  • user1.app.com
  • user2.app.com
  • user3.app.com

现在,假设他们想将自己的域名指向他们的个人资料,因此 www.user1.com 显示 user1.app.comwww .user1.com/my-content/ 显示 user1.app.com/my-content/。他们是否可以简单地将其名称服务器更改为指向我们,然后由我们处理路由?如果用户必须进行任何 DNS 配置而不仅仅是更改其名称服务器,我担心这将是一个交易破坏者。

谢谢!

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    这真的是两个问题。 所以我想我会这样回答。

    如何允许客户向我基于 heroku 的应用添加自定义域?

    所以,在你的例子中,他们的域名是www.user1.com

    有两件事需要发生

    1. www.user1.com 需要添加到应用程序的 Heroku 域中
    2. www.user1.com 的 dns 需要设置为 heroku 服务器

    为了添加这个新域,我猜你需要将自定义域存储在应用程序中, 并且当它被更改或创建时,确保设置了一个排队任务以将此配置更改推送到 heroku。

    为了正确执行 dns,我希望他们为 user1.app.com 添加一个 CNAME 就足够了。 因此,如果你有一个通配符 CNAME 链接到 heroku 的 dns,你可以避免 Heroku 再次被 DOS 攻击时可能发生的停机类型。

    如何根据域而不是子域显示内容?

    嗯,不知何故,您已经将user1.app.comuser2.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
    

    【讨论】:

    • 这真的很有用。谢谢!
    【解决方案2】:

    您首先需要让他们将 www.user1.com 设置为指向 proxy.heroku.com(或设置您自己的 cname 条目到 proxy.heroku.com 并让他们将他们的域命名为那个)然后你需要用你的heroku应用程序注册他们的自定义域,以便正确的应用程序响应存储在他们帐户上的Heroku?在您的应用程序中,以便可以匹配传入的请求。

    Locomotive Rails CMS 中采用了这种技术,因此我建议您查看一下 - 它使用 Heroku gem INSIDE 应用程序,因此可以通过站点管理员添加自定义域,然后由管理员进行对话到 Heroku API 以将自定义域添加到应用程序。

    【讨论】:

    • 如果用户的域已经注册到另一个heroku应用程序,这是不可能的吧?
    • 我正在尝试设置同样的东西,但我遇到了上面提到的问题。该域已在另一个 Heroku 应用程序中注册。有没有办法在不向 Heroku 注册每个自定义域的情况下做到这一点?
    • @john-beynon 如果您可以指向 Locomotive CMS 中的代码,那将非常有帮助。我试过但找不到。
    • 路由到 proxy.heroku.com 是如何工作的?它是否记录在 Heroku 的任何地方?提前致谢。
    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    相关资源
    最近更新 更多