【问题标题】:Force SSL for Heroku apps running in EU region为在欧盟地区运行的 Heroku 应用强制使用 SSL
【发布时间】:2014-12-09 11:05:26
【问题描述】:

我正在努力为在 Heroku(欧盟地区)上运行的 Rails 应用强制实施 SSL 连接。

我已成功将证书(inc Heroku SSL 插件)添加到自定义域(如果我明确声明 https://..com 它可以正常工作)

但我想将所有 http 请求重定向到 https 连接。

对于美国地区的应用,这需要将自定义域 DNS 记录指向 .herokussl.com 而不是 .herokuapp.com。文档:https://devcenter.heroku.com/articles/ssl-endpoint#dns-and-domain-configuration

对于欧盟地区的应用,自定义 DNS 记录仍应指向 .herokuapp.com,这似乎不会默认强制 SSL 连接。

因此,我的问题是:如何让在欧洲运行的 Heroku 应用的所有连接都强制通过 SSL 运行?

【问题讨论】:

    标签: ruby-on-rails ssl heroku https dns


    【解决方案1】:

    生产.rb

    Rails.application.configure do
        config.force_ssl = true
    end
    

    这会将所有 http 流量重定向到 https

    编辑:值得注意的是,这是 Rails 的东西,而不是 heroku 的东西。

    修订:

    由于这个答案/问题经常被看到和投票,它也可以在控制器内根据每个请求进行:

    class AccountsController < ApplicationController
      force_ssl if: :ssl_configured?
    
      def ssl_configured?
        !Rails.env.development?
      end
    end
    

    【讨论】:

    • 这就是我要找的。谢谢!
    【解决方案2】:

    仅供参考,您的问题提到了herokussl.com,这是已弃用的Heroku SSL Endpoint 服务的一部分。 Heroku 现在推荐使用Heroku SSL 服务:

    仅当您需要支持不支持 SNI 的旧版浏览器客户端时,才建议使用 SSL 端点插件。我们的默认建议是使用this document 中描述的 Heroku SSL。

    另请注意,appname.herokuapp.com 域已经启用 SSL,可以使用 https 访问,例如,https://appname.herokuapp.com

    【讨论】:

      猜你喜欢
      • 2013-06-22
      • 2016-04-24
      • 2020-03-28
      • 2021-02-22
      • 1970-01-01
      • 2023-02-01
      • 2021-08-02
      • 2013-04-30
      • 2014-03-28
      相关资源
      最近更新 更多