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:如果我找到一个更清洁的方法,我会编辑答案. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 为什么ruby栏杆需要美洲狮或独
- ruby-on-rails-与ws://example.com/cable的WebS
- php – 在Apache/Nginx设置中刷新输出缓冲区
- 我可以使用vanilla Nginx作为响应体来回显请求标
- asp.net-mvc-2 – 关于nginx/mono 2.8的ASP.Net
- express – 将本地nginx服务器部署到公共ubuntu
- PHP-nginx-502错误的网关,一些ajax请求
- getgrenam(“user”)在/etc/nginx/nginx.conf中失
- OpenResty:使用已经给定的/etc/nginx/nginx.con
- nginx – 使用Spring Cloud OAuth2的SSL /代理问