被阻止的主机:rails 6.0.0 上的 localhost ruby

Posted

技术标签:

【中文标题】被阻止的主机:rails 6.0.0 上的 localhost ruby【英文标题】:Blocked host: localhost ruby on rails 6.0.0 【发布时间】:2020-02-15 18:50:24 【问题描述】:

我正在开发我的第一个 rails 6 应用程序,但是当我尝试在我的 nginx 服务器后面的开发环境中提供它时,我发现了这条消息

我尝试在config/environments/development.rbconfig/application.rb 中添加错误中提到的配置,但没有成功。

我正在使用 rails 6.0.0、ruby 2.6.5、nginx 1.10.3

如果我去http://localhost:3000(直接puma URL)它工作正常。但我想知道为什么会出现这个错误。

【问题讨论】:

【参考方案1】:

这是Rails side 上的一个问题。

升级到6.0.4.46.1.4.4,就像您可以在他们的blog post 中阅读一样。

【讨论】:

【参考方案2】:

添加主机授权是因为DNS rebinding attacks 这里有更多详细信息,还可以链接到更详细的说明。

介绍 ActionDispatch::HostAuthorization 主机授权是一个 通过显式防御DNS rebinding attacks 的新中间件 允许可以向主机发送请求。有关更多信息 攻击本身可在此 Medium 帖子和 Daniel Miessler’s DNS Rebinding attack explained 中找到。默认情况下,它设置为所有 Rails 6 应用程序并允许开发以下主机 IPAddr.new(“0.0.0.0/0”), IPAddr.new(“::/0”), “localhost”] 支持 RegExp、Proc、IPAddr 和 String 的数组或 配置。这意味着在 Rails 6 中,我们需要 在环境配置文件中明确设置我们的域。 更多信息可在 HostAuthoration 代码和 HostAuthorization 测试。

【讨论】:

app 文件夹内没有 config 文件夹,但我明白你想说什么,我已经编辑了我的问题,因为我已经尝试将它添加到 config/environments/development.rb 你检查这个解释了吗? fngtps.com/2019/rails6-blocked-host 是的,我读到了,但它说 localhost 默认启用,所以我认为某处存在错误,但是,我知道什么?我也不想禁用主机检查,我只想知道发生了什么谢谢 这里还有一个问题:github.com/thoughtbot/suspenders/issues/975 以及 rails config.hosts 实现:github.com/rails/rails/blob/… 所以你可以多检查一下,也许你能找到一些逻辑。

以上是关于被阻止的主机:rails 6.0.0 上的 localhost ruby的主要内容,如果未能解决你的问题,请参考以下文章

Telnet 在端口 (443) 上被阻止,但仍允许同一主机和端口上的 Web 服务请求

将 Rails 5.2 升级到 6.0.0 后内存泄漏

如何将 Rails 应用程序连接到主机上的 docker postgres

从 XCode 访问 Mac 上的本地主机? Phonegap 通过 Ajax 与本地 Rails 应用程序通信

由于许多连接错误,主机“主机名”被阻止;使用 'mysqladmin flush-hosts' 解除阻塞

虚拟主机因隐私错误在 Chrome 上被阻止