【问题标题】:Rails SSL redirection via gem versus Apache level通过 gem 与 A​​pache 级别的 Rails SSL 重定向
【发布时间】:2011-04-27 16:28:00
【问题描述】:

我正在研究实施 SSL 以保护我的 rails 应用程序的最佳方法。当天的建议似乎是一直使用 SSL。目前似乎有两种方法:

  1. 使用诸如 Rack::SSL 或 Rack::SslEnforcer 之类的 gem,这里有详细讨论: http://collectiveidea.com/blog/archives/2010/11/29/ssl-with-rails/

  2. 在网络服务器级别重定向,这里推荐: Rails + SSL: Per controller or application-wide?

我确信在 Apache 级别进行重定向(假设正在运行 Apache)必须是可行的方法,既可以简化实现,也可以简化性能。

我不明白也没有看到解决的问题是,为什么要在应用层使用 gems 来做这么多的努力和关注?甚至还有来自 DHH 的评论(上面第一个链接中的最后一条评论)指出“Rails 3.1 现在将在应用程序和控制器级别加入 force_ssl。”那我错过了什么?

为什么要选择使用其中一个 gem 来一直使用 SSL?

【问题讨论】:

  • 当然 - 我已经更新了标题。

标签: ruby-on-rails ruby-on-rails-3 ssl


【解决方案1】:

第一,Rails 社区很容易接受它。现在,无论何时您想为 Rails 应用程序要求 https,您都可以翻转这个开关,无论您使用什么服务器或其他架构,它都可以工作。

第二,如果您使用 Heroku 之类的托管服务,则无论如何您都无法访问服务器配置设置。

【讨论】:

    【解决方案2】:

    force_ssl 是添加到 Rails 3 的配置属性。它使应用程序使用 Rack::SSL 中间件。 参考:http://edgeguides.rubyonrails.org/configuring.html

    所以 config.force_ssl 是一种方便,可以让您避免弄乱 Rack 堆栈;它已经为你完成了。

    在 Rails 2.X 应用程序中,您将没有 force_ssl 并且必须自己注入 Rack::SSL 或 Rack::SslEnforcer。

    【讨论】:

    • 虽然如果我理解正确的话,可以选择使用网络服务器将网站的所有流量重定向到 SSL。
    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2017-03-26
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多