Passport.js 表达 google nginx 上的 oauth 502 错误网关
Passport.js express google oauth 502 Bad Gateway on nginx
我正在尝试按照本指南使用 passport.js 为我的 Express.js 应用程序实施一个简单的 Google OAuth(只需将 facebook
替换为 google
) https://github.com/passport/express-4.x-facebook-example/blob/master/server.js
当我在本地尝试时,一切似乎运行良好。当我将它部署到我的 Ubuntu 生产服务器时,我在从 Google 到 /login/google/return
端点的重定向回调期间收到 502 Bad Gateway
错误。
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
登录到 google,被重定向到 https://example.com/auth/login/google/return?code=4/adasfdafdsfd#
,然后发生 502 错误。
我试过在我的 OS X 开发机器上设置类似的 nginx 环境,但问题没有出现。
我也曾尝试将以下内容添加到 nginx 块配置中,但这似乎也无济于事
proxy_buffers 8 16k;
对于如何调试/解决这个问题,我束手无策。任何人的建议将不胜感激。这是我目前的项目 link https://github.com/tnguyen14/auth/blob/master/index.js
所以我很接近。 proxy_buffers 8 16k;
还不够。将以下两行添加到 nginx 修复它:
proxy_buffers 8 16k;
proxy_buffer_size 32k;
更新:原来,它抱怨 header 大小的原因是因为我没有 serialize
足够的用户配置文件,所以 object 对于曲奇饼。由于我使用的是 cookie-session
,所有这些数据都被塞进了 cookie,使其太大。
减少将由 passport 序列化的内容 session 无需添加 nginx 配置即可解决此问题。
我正在尝试按照本指南使用 passport.js 为我的 Express.js 应用程序实施一个简单的 Google OAuth(只需将 facebook
替换为 google
) https://github.com/passport/express-4.x-facebook-example/blob/master/server.js
当我在本地尝试时,一切似乎运行良好。当我将它部署到我的 Ubuntu 生产服务器时,我在从 Google 到 /login/google/return
端点的重定向回调期间收到 502 Bad Gateway
错误。
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
登录到 google,被重定向到 https://example.com/auth/login/google/return?code=4/adasfdafdsfd#
,然后发生 502 错误。
我试过在我的 OS X 开发机器上设置类似的 nginx 环境,但问题没有出现。
我也曾尝试将以下内容添加到 nginx 块配置中,但这似乎也无济于事
proxy_buffers 8 16k;
对于如何调试/解决这个问题,我束手无策。任何人的建议将不胜感激。这是我目前的项目 link https://github.com/tnguyen14/auth/blob/master/index.js
所以我很接近。 proxy_buffers 8 16k;
还不够。将以下两行添加到 nginx 修复它:
proxy_buffers 8 16k;
proxy_buffer_size 32k;
更新:原来,它抱怨 header 大小的原因是因为我没有 serialize
足够的用户配置文件,所以 object 对于曲奇饼。由于我使用的是 cookie-session
,所有这些数据都被塞进了 cookie,使其太大。
减少将由 passport 序列化的内容 session 无需添加 nginx 配置即可解决此问题。