有必要force_ssl吗?或者 SSL 应该在负载均衡器处终止吗?

Is it necessary to force_ssl? Or should the SSL terminate at the load balancer?

在 AWS OpsWorks 上。我使用的是 ELB,它具有我的 CA 的 SSL 证书。

第一个访问点始终是负载平衡器 (ELB)。 ELB 将流量定向到实例。每个实例都有 Rails 应用程序、Unicorn 等

的副本

有一点要注意。 ELB后面的实例无法直接访问

这个时候,我需要在Rails中force_ssl吗?我听说在边界 (ELB) 终止 SSL 很常见。

据我所知,force_ssl 给出了以下内容:

  1. 自动将流量从 http 重定向到 https。
  2. 将 cookie 标记为安全和一些额外的保护(即防止 MITM 攻击)。

http://api.rubyonrails.org/classes/ActionController/ForceSSL/ClassMethods.html 仅表示 http 到 https 重定向。

What does force_ssl do in Rails? 第二个答案表明 force_ssl 不仅仅是重定向。

如果我决定不使用 force_ssl,我可以通过编写 Nginx 定义来管理重定向。

在这种情况下,感觉通过 Rails 强制使用 SSL 已经过时了,因为 ELB 中已经在进行 SSL 协商。还需要force_ssl吗?有什么额外的好处吗?

如果您在 ELB 级别终止 SSL,则您不希望这样做。 (您想获取 http 流量而不被重定向)。

请记住,在这种情况下,ELB 和您的后端实例之间的流量将通过 HTTP(即未加密)。这对大多数情况都很好。