ruby-on-rails - 多个域通过显示不同内容的名称服务器指向单个 Heroku Rails 应用程序?

标签 ruby-on-rails heroku

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

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

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

    谢谢!

    最佳答案

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

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

    所以,在你的例子中,他们的域名是 www.user1.com
    有两件事需要发生

  • www.user1.com需要将应用添加到您的 heroku 域
  • www.user1.com的DNS需要设置到heroku服务器

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

    为了正确地做dns,我希望他们添加一个CNAME就足够了。为 user1.app.com .
    因此,如果您有一个通配符 CNAME 链接到 heroku 的 dns,您可以避免在 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
    

    关于ruby-on-rails - 多个域通过显示不同内容的名称服务器指向单个 Heroku Rails 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360944/

    相关文章:

    ruby-on-rails - 为什么 nginx 在开发环境中为我的 Rails 应用程序提供服务的速度非常慢?

    mysql - 如何使订单仅适用于非空记录但获取所有记录?

    SSL 与 Heroku 托管和 Gandi 域

    php - 带有wordpress作为子文件夹的Rails heroku应用程序,无法登录到管理员

    javascript - js文件合并为单文件制作模式。如何单独加载

    ruby-on-rails - 如何在 X 字符后在 ruby​​ on rails 中换行?

    javascript - 如何告诉谷歌地图 API 加载脚本在 React 组件中寻找回调?

    node.js - 本地 NPM 模块(npm 链接)部署到 Heroku

    database - Heroku:上线时要改变什么?

    python - 在 Heroku 应用程序中同时运行 Django 和 Node