connect-redis不想连接到远程主机

序言:我正在AWS EB上运行一个节点应用程序,并使用Elasticache Redis服务器进行会话pipe理。 我试图使用connect-redis连接到elasticache,似乎没有使用我提供的主机设置,而是默认为127.0.0.1。

我正在运行一个节点的应用程序与设置为caching的Redis服务器。 main.js如下:

var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var expressSession = require('express-session'); var redis = require("redis"); var redisStore = require('connect-redis')(expressSession); // Application libraries var express = require('express'); // Redis client var redisclient = redis.createClient(); redisclient.on("error", function (err) { console.log("REDIS Error " + err); }); // Initialise the application var app = express(); var sessionport = isNaN(process.env.SESSION_PORT) ? 6379 : Number(process.env.SESSION_PORT); console.log('redis://' + process.env.SESSION_HOST + ':' + sessionport); var store = new redisStore({ host: process.env.SESSION_HOST, port: sessionport, client: redisclient, ttl : 2.29e+7 }); app.use(expressSession({ saveUninitialized: false, resave: false, secret: process.env.SESSION_SECRET, store: store })); 

我的环境variables是:

 SESSION_HOST: my-session-host.usw2.cache.amazonaws.com SESSION_PORT: 6379 SESSION_SECRET: supersecret 

但是,当我的服务器启动时,我看到节点输出的以下输出:

 Worker #1 is online. (pid 17643) redis://liamegan-session-001.i0o002.0001.usw2.cache.amazonaws.com:6379 REDIS Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 REDIS Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 REDIS Error Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 

它看起来像试图连接到127.0.0.1,尽pipe我提供了一个主机。 我也尝试构build并提供redisStore构造函数的redis URL。

我在这里做什么显然是错的?

这里的问题是我提供现有的redisclient redisStore构造函数。 这样做胜过创build一个新的客户端,因此覆盖在那里设置的主机和端口。 要解决这个问题,我只需将主机和端口添加到redis.createClient。

 // Redis client var sessionport = isNaN(process.env.SESSION_PORT) ? 6379 : Number(process.env.SESSION_PORT); var redisclient = redis.createClient({ host: process.env.SESSION_HOST, port: sessionport });