ruby-on-rails – 在SSL模式下运行nginx后,Omniauth和open_id与Google断开连接
Rails 3.0.12,最新的omniauth,我可以连接到谷歌并获得用户的电子邮件地址就好了.但是我在SSL模式下在nginx后面运行相同的rails应用程序,并且它在Google页面中失败:
这是我的nginx配置吗?我的omniauth设置? 我知道X-Forwarded-Proto:https是这里的特殊酱,我还需要做些什么才能在SSL网络服务器后面获得开心的快乐吗? 下面是完整的示例代码:您可以克隆此repo,捆绑安装,并运行rails以查看它是否正常工作,然后运行rake服务器以查看它是否失败. nginx.conf:
omniauth.rb初始化程序:
routes.rb中:
更新:此示例使用Rails 3.1.12和OmniAuth 1.0.3.升级到Rails 3.1.4和OmniAuth 1.1.0修复了这个问题. 最佳答案 找到你的问题,我仍然想找到更干净的东西,但这里是快速的&脏修复: 在config / initializers / omniauth.rb中添加:
现在解释一下:当rack-openid gem构建发送到google openid服务器的请求时,它使用rails应用程序访问URL而不是nginx(使用ssl)在一个地方失败,导致这被发送到openid服务器:
领域使用http url(rails url),而return_to指向正确的https url(nginx),当openid服务器看到它停止并返回错误时. PS:如果我找到一个更清洁的方法,我会编辑答案. (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Nginx反向代理中设置MongoDB
- nginx-Capistrano 3无权查询此Phusion Passenger
- nginx – 提供由PHP生成的自定义404页面
- angularjs-$http.post请求标头字段Access-Contro
- 带有nginx的Django频道没有客户端收到的消息
- Nginx try_files(文件夹文件)后备
- Nginx port_in_redirect不起作用?
- nginx: [warn] conflicting server name on 0.0.
- 通过nginx提供fastcgi
- http – Nginx proxy_cache_key $request_body被