gpt4 book ai didi

ruby-on-rails - Heroku 的 Rails : Proper setup with DNS, 机架重写等

转载 作者:行者123 更新时间:2023-12-02 22:43:35 24 4
gpt4 key购买 nike

我在整个互联网上都看过了,但无法找到一个最终的解决方案来解决我期望的 100% 正确设置 DNS 等问题,以便在 Heroku.com 上获得以下结果:

我可以从任何地方得到一些帮助,但没有任何结论可以解决从 DNS 到机架重写的整个问题,所以这就是我在这里问的原因(我的注册商和 Heroku 的支持只能给我“他们的部分”)。

需要做的是,据我了解:

  1. 将 mydomain.com 和 www.mydomain.com 添加到 Heroku 的自定义域

  2. 将 CNAME 更改为 http://myapp.herokuapp.com在我的注册商 DNS 中。 问题:是不是“www”和“*”都会使用 CNAME 重定向到 myapp.herokuapp.com?

  3. 添加“@”DNS 记录以处理裸域请求 (http://mydomain.com)。因为这不会用 CNAME 完成,我使用的 IP 号码是 https://devcenter.heroku.com/articles/custom-domains ,尽管根据文章,它们存在严重的正常运行时间问题。

-- 1-3 给我留下了一个同时服务于 http://mydomain.com 的网站和 http://www.mydomain.com内容在 http://myapp.herokuapp.com

现在,我想重定向 http://mydomain.com 中的所有内容至 http://www.mydomain.com并且,根据 Heroku 的支持,这应该通过 rack-rewrite (https://github.com/jtrupiano/rack-rewrite) 来完成。使用那里的例子,代码应该是:

r301 %r{.*}, 'http://mydomain.com$&', :if => Proc.new {|rack_env|
rack_env['SERVER_NAME'] != 'www.mydomain.com'
}

然而,这为我创造了一个永恒的循环。

那么,我现在的问题是:为了实现此设置,Heroku 和 DNS 设置的正确工作流程是什么?

解决这个问题非常困难,因为通过反复试验尝试不同的 DNS 设置非常困难(很难知道它们是否已经通过)。

最佳答案

这是重写规则 我认为它是在说“做一个 301 重定向到‘http://mydomain.com$&’($& 表示它将保留 .com 之后的所有内容)但是仅当请求中的主机不是“www.mydomain.com”时。

因此您将进入重定向循环,因为任何对您服务器的请求都没有包含 www,例如裸露的 mydomain.com,将重定向回 mydomain.com。

它可能需要重写为:

r301 %r{.*}, 'http://www.mydomain.com$&', :if => Proc.new {|rack_env|
rack_env['SERVER_NAME'] == 'mydomain.com'}

因此您正在重定向到您域的 www 版本。

其实有一个dupe here

编辑:这就是我要做的:

  1. 删除重定向规则
  2. 设置您的 dns,以便 www.domain.com 和 domain.com 都返回 myapp.herokuapp.com
  3. 验证 dns 是否正常工作而无需担心重定向
  4. 确保在 DNS 级别它没有尝试做一些有用的重定向

在此阶段,与 DNS 没有任何其他关系。他们唯一做的就是返回一个 IP 地址(A 记录)或另一个域(CNAME)。然后他们的工作就完成了。

下一步:

  1. 应用机架重写规则
  2. 服务器可能需要重启 - 以防万一
  3. 使用 Sam Spade 之类的东西进行测试- header 将包含 301 重定向和新位置(如果它正常工作的话)

关于ruby-on-rails - Heroku 的 Rails : Proper setup with DNS, 机架重写等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com