Rails通过gem与Apache级别进行SSL重定向

时间:2011-04-27 16:28:01

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

我正在研究实施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?

  3. 我确信在Apache级别重定向(假设一个运行Apache)必须成为可行的方法,以简化实现和性能。

    我不明白并且没有看到解决的问题是为什么在应用层使用宝石进行这么多的努力和关注?甚至DHH的评论(上面第一个链接中的最后评论)说“Rails 3.1现在将在应用程序和控制器级别都有force_ssl。”那我错过了什么?

    为什么人们会选择使用其中一个宝石一直使用SSL?

2 个答案:

答案 0 :(得分:1)

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。

答案 1 :(得分:1)

一,这是Rails社区的一个简单标准。现在,无论何时您想要为Rails应用程序要求https,您都可以翻转此单个交换机,无论您使用何种服务器或其他架构,它都能正常工作。

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