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:如果我找到一个更清洁的方法,我会编辑答案. (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- bash – 找不到NGINX brew install命令
- 如何配置NGINX SSL(SNI)
- ubuntu – / etc / nginx / sites-enabled / defaul中的“s
- PHP会话不存储/保存-php-fpm / nginx / phpmyadmin / cento
- ubuntu – nginx,所有文件应该由www-data拥有吗?
- linux – 如何在nginx中限制对动态生成位置的访问?
- node.js-Nginx反向代理:如何通过子域访问不同的容器?
- php – fastcgi有访问日志吗?
- python – uWSGI服务器日志…权限被拒绝读取文件…哪个文件
- 缓存-Nginx:向fastcgi_cache响应添加条件到期标头