Moh*_*ani 6 session load-balancing nginx redis node.js
我尝试使用redis作为会话存储,通过nginx在Nodejs中加载Balance.
我正在使用3台机器
我在机器B中设置了一个会话变量,我试图通过机器C访问同一个会话变量.
我使用redis作为会话存储,所以我应该访问机器B中的变量.
机器B的编码是(文件名为app.js)
var express = require('express');
var redis = require("redis");
var session = require('express-session');
var redisStore = require('connect-redis')(session);
var bodyParser = require('body-parser');
var client = redis.createClient();
var app = express();
app.use(session({
secret: 'ssshhhhh',
// create new redis store.
store: new redisStore({ host: '192.168.14.65', port: 6379, client: client,ttl : 260}),
saveUninitialized: false,
resave: false
}));
app.get('/', function (req, res) {
console.log(req.session);
req.session.helloworld = 'helloworld';
res.send('set session');
});
app.listen(3000,function(){
console.log("App Started on PORT 3000");
});
Run Code Online (Sandbox Code Playgroud)
机器C的编码是(文件名为app.js)
var express = require('express');
var redis = require("redis");
var session = require('express-session');
var redisStore = require('connect-redis')(session);
var bodyParser = require('body-parser');
var client = redis.createClient();
var app = express();
app.use(session({
secret: 'ssshhhhh',
// create new redis store.
store: new redisStore({ host: '192.168.14.65', port: 6379, client: client,ttl : 260}),
saveUninitialized: false,
resave: false
}));
app.get('/', function (req, res) {
if(req.session.helloworld) {
res.send('get session: '+ req.session.helloworld);
} else {
res.send('no session: ');
}
});
app.listen(3000,function(){
console.log("App Started on PORT 3000");
});
Run Code Online (Sandbox Code Playgroud)
我在两台机器上都有package.json
package.json代码
{
"name": "Node-Session-Redis",
"version": "0.0.1",
"scripts": {
"start": "node ./bin"
},
"dependencies": {
"async": "^1.2.1",
"body-parser": "^1.13.0",
"connect-redis": "^2.3.0",
"cookie-parser": "^1.3.5",
"ejs": "^2.3.1",
"express": "^4.12.4",
"express-session": "^1.11.3",
"mysql": "^2.7.0",
"redis": "^0.12.1"
}
}
Run Code Online (Sandbox Code Playgroud)
我使用命令运行代码
node app.js
Run Code Online (Sandbox Code Playgroud)
机器B一切正常.
但是我在Machine C中遇到了一些错误.
TypeError: Cannot read property 'helloworld' of undefined
at /home/local/PAYODA/balachandran.v/js/app.js:19:17
at Layer.handle [as handle_request] (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/layer.js:95:5)
at next (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/layer.js:95:5)
at /home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/index.js:330:12)
at next (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/index.js:271:10)
at session (/home/local/PAYODA/balachandran.v/js/node_modules/express-session/index.js:159:61)
at Layer.handle [as handle_request] (/home/local/PAYODA/balachandran.v/js/node_modules/express/lib/router/layer.js:95:5)
Run Code Online (Sandbox Code Playgroud)
当我在控制台中尝试req.session时,机器B机器B出错了.
{ cookie: { path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true } }
Run Code Online (Sandbox Code Playgroud)
机器C错误
undefine
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我哪里错了吗?提前致谢
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |