Tri*_*yen 2 oauth nginx node.js express passport.js
我正在尝试按照本指南使用 Passport.js 为我的 Express.js 应用程序实现一个简单的 Google OAuth(只需替换facebook为google)https://github.com/passport/express-4.x-facebook-example/blob/master /服务器.js
当我在本地尝试时,一切似乎运行良好。当我将其部署到 Ubuntu 生产服务器时,我502 Bad Gateway在从 Google 到端点的重定向回调期间收到错误/login/google/return。
app.get('/login/google/return',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)
如果我注释掉该行passport.authenticate('google', {..}),那么错误就会消失。检查 nginx 错误日志后,我看到此错误
upstream sent too big header while reading response header from upstream
Run Code Online (Sandbox Code Playgroud)
这是 nginx 的服务器配置块:
location /auth/ {
proxy_pass http://0.0.0.0:3000/;
}
Run Code Online (Sandbox Code Playgroud)
这意味着我将通过转到 登录谷歌https://example.com/auth/login/google,被重定向到https://example.com/auth/login/google/return?code=4/adasfdafdsfd#,然后发生 502 错误。
我尝试在我的 OS X 开发机器上设置类似的 nginx 环境,但那里没有出现问题。
我还尝试将以下内容添加到 nginx 块配置中,但这似乎也没有帮助
proxy_buffers 8 16k;
Run Code Online (Sandbox Code Playgroud)
对于如何调试/解决这个问题我束手无策。任何人的建议将不胜感激。这是到目前为止我的项目的链接https://github.com/tnguyen14/auth/blob/master/index.js
所以我很接近。proxy_buffers 8 16k;还不够。将以下两行添加到 nginx 修复了它:
proxy_buffers 8 16k;
proxy_buffer_size 32k;
Run Code Online (Sandbox Code Playgroud)
更新:事实证明,它抱怨标头大小的原因是因为我没有serialize足够的用户配置文件,所以对象对于 cookie 来说太大了。由于我使用的是cookie-session,所以所有数据都被填充到 cookie 中,使其太大。
减少由 Passport 会话序列化的内容可以解决这个问题,而无需添加 nginx 配置。
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |