是谁强制我SSL?

  1. 1. Rails 的 force_ssl 选项
  2. 2. DoorKeeper 的 force_ssl_in_redirect_uri 选项
  3. 3. Nginx

今天准备用omniauth和omniauth-oauth2 这两个东西自己写一下使用forum.qilian.jp账号作为第三方登陆的策略。
发现了一个蛋疼的问题,尽管我配置的callback url是类似https://localhost:3000/callback这种形式,返回的callback居然自动切换成了https。
在local开发的是时候,自然不需要https,当然最好也不需要https,所以必须得把这个问题解决。
那么到底是什么造成了callback成了https呢?

Rails 的 force_ssl 选项

查看配置,force_ssl是false,这个锅应该是别人的。

DoorKeeper 的 force_ssl_in_redirect_uri 选项

同样查看配置,发现 force_ssl_in_redirect_uri 也是false。

???

Nginx

最后在Nginx的配置里找到了这么一行。

1
proxy_redirect https:// https://

proxy_redirect 会在重定向的时候根据提供的规则修改Location header。
原本的配置本意是强制所有重定都指向https,其实有点画蛇添足了。因为这么一改,把原本指向非本站点的重定向也强制成https了。
注释掉这么一句,终于拜托了讨厌的重定向,看一下时间,已经是快接近黄昏的时候了。

如果你觉得本文对你有帮助,请给我点赞助。