Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Passport.js express google oauth 502 nginx上的坏网关_Node.js_Express_Nginx_Oauth_Passport.js - Fatal编程技术网

Node.js Passport.js express google oauth 502 nginx上的坏网关

Node.js Passport.js express google oauth 502 nginx上的坏网关,node.js,express,nginx,oauth,passport.js,Node.js,Express,Nginx,Oauth,Passport.js,我正在尝试使用passport.js为我的Express.js应用程序实现一个简单的Google OAuth,遵循以下指南(只需将facebook替换为Google) 当我在当地尝试时,事情似乎进展顺利。当我将它部署到我的Ubuntu生产服务器时,在从Google重定向回调到/login/Google/return端点的过程中,我得到了一个502坏网关错误 app.get('/login/google/return', passport.authenticate('google', { f

我正在尝试使用passport.js为我的Express.js应用程序实现一个简单的Google OAuth,遵循以下指南(只需将
facebook
替换为
Google

当我在当地尝试时,事情似乎进展顺利。当我将它部署到我的Ubuntu生产服务器时,在从Google重定向回调到
/login/Google/return
端点的过程中,我得到了一个
502坏网关
错误

app.get('/login/google/return', 
  passport.authenticate('google', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });
如果我注释掉行
passport.authenticate('google',{..})
,那么错误就会消失。在检查nginx错误日志时,我看到了这个错误

upstream sent too big header while reading response header from upstream
以下是nginx的服务器配置块:

location /auth/ {
   proxy_pass http://0.0.0.0:3000/;
}
这意味着我将通过进入
https://example.com/auth/login/google
,正在重定向到
https://example.com/auth/login/google/return?code=4/adasfdafdsfd#
,然后发生502错误

我曾尝试在我的OSX开发机器上设置类似的nginx环境,但问题并未出现

我还尝试将以下内容添加到nginx块配置中,但这似乎也没有帮助

proxy_buffers 8 16k;

我对如何调试/解决这个问题束手无策。任何人的建议都将不胜感激。这是到目前为止我的项目的链接

所以我很接近<代码>代理缓存8 16k不足。将以下两行添加到nginx修复了它:

proxy_buffers 8 16k;
proxy_buffer_size 32k;
更新:事实证明,它抱怨标题大小的原因是因为我没有充分序列化用户配置文件,所以对象对于cookie来说太大了。因为我使用的是
cookie会话
,所以所有的数据都被塞进了cookie中,使它太大了


减少passport会话序列化的内容可以解决这个问题,而无需添加nginx配置。

所以我很接近<代码>代理缓存8 16k不足。将以下两行添加到nginx修复了它:

proxy_buffers 8 16k;
proxy_buffer_size 32k;
更新:事实证明,它抱怨标题大小的原因是因为我没有充分序列化用户配置文件,所以对象对于cookie来说太大了。因为我使用的是
cookie会话
,所以所有的数据都被塞进了cookie中,使它太大了


减少passport会话序列化的内容可以在不添加nginx配置的情况下解决此问题。

只是为了确保我理解正确,如果您转到登录页面,则会获得502。你真的试过去看电影吗?只需在地址栏中键入该地址,然后按enter键,你会得到502吗?看看这个@Molda如果我直接转到
/login/google/return
,它可以很好地重定向到google的帐户选择器页面。只有当Google重定向到带有代码的
/login/Google/return
时,才会出现502。我不认为你链接的答案是非常相关的,因为我没有使用fastcgi。只是为了确保我理解正确,如果你去你的登录页面,但如果你去你得到502。你真的试过去看电影吗?只需在地址栏中键入该地址,然后按enter键,你会得到502吗?看看这个@Molda如果我直接转到
/login/google/return
,它可以很好地重定向到google的帐户选择器页面。只有当Google重定向到带有代码的
/login/Google/return
时,才会出现502。我认为你链接的答案不太相关,因为我没有使用fastcgi。