被阻止的主机: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.rb
和config/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.4
或6.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 应用程序连接到主机上的 docker postgres
从 XCode 访问 Mac 上的本地主机? Phonegap 通过 Ajax 与本地 Rails 应用程序通信