繁体   English   中英

使用 CloudFlare SSL 在 Rails 4 上执行 force_ssl 重定向循环

[英]force_ssl redirect loop on Rails 4 using CloudFlare SSL

使用force_ssl方法(使用 CloudFlare 的一键 SSL 功能实现的 SSL)强制执行 ssl 时,我的 Rails 4 应用程序出现重定向循环。

当我在CloudFlare中从“灵活”切换到“完整”SSL设置时,这种情况就停止了。

Cloudflare 试图通过 HTTP 强制连接,因为您的服务器没有 HTTPS,但您的应用程序正在强制使用 SSL。

问题

这发生在一组特定的情况下:

  1. 您的 Cloudflare (CF) SSL 设置是Flexible ,CF 和 Heroku 之间允许使用 HTTP。
  2. 您的服务器或 Heroku 实例的 SSL 未设置,因此它强制 HTTP 之间的连接

发生的事情是:

  1. 您通过HTTPS连接到域
  2. Cloudflare 介入处理 SSL 部分,并尝试通过普通 HTTP 从服务器获取应用程序
  3. 服务器看到通过 HTTP 的连接并重定向到 HTTPS
  4. 转到步骤 1

这会导致无限重定向循环。

解决方案

将您的应用服务器升​​级到 HTTPS,这解决了重定向问题。 然后,为了安全起见,将 Cloudflare 切换到Full

第一:我在我的服务器上配置了 SSL。 就我而言,我使用的是 Heroku,它可以使用 Let's Encrypt 自动配置 SSL。 如果你不是,你会直接使用 Let's Encrypt。 Cloudflare 还提供自签名源证书,但既然 Let's Encrypt 既简单又免费,又何必费心呢。

第二:我将我的应用程序配置为通过将以下内容添加到production.rb来强制使用 SSL

config.force_ssl = true

第三:由于我的服务器和 Cloudflare 之间不再需要 HTTP 连接,我将其从Flexible切换到Full 如果您使用 Let's Encrypt 或 CA 来配置服务器的证书,则可以切换到Flexible (Strict)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM