2016-08-13 16 views
2

プリアンブル:私はAWS EBでノードアプリケーションを実行していますが、私はセッション管理にElasticache redis serverを使用しています。私は、connect-redisを使ってelasticacheに接続しようとしています。それは、私が提供するホスト設定を使用していないように見えます。代わりに127.0.0.1にデフォルト設定されています。connect-redisはリモートホストに接続したくありません

私はキャッシュ用に設定された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 
})); 

私の環境変数は以下のとおりです。私のサーバーの起動時に

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に接続しようとしているようです。また、redisStoreコンストラクタにredis URLを構築して提供することも試みました。

私はここで間違ったことをしていますか?

答えて

2

ここでの問題は、既存のredisclientをredisStoreコンストラクタに提供していたことです。これを行うと、新しいクライアントの作成が優先され、そこでホストとポートがオーバーライドされます。これを修正するために、単にホストとポートを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 
}); 
関連する問題