当我尝试使用adapter: 'redis'
时,它告诉我安装socket.io-redis版本0.14。我这样做了,并将所有信息输入到session.js文件中:
module.exports.session = {
adapter: 'socket.io-redis'
host: '10...',
port: 6379,
db: 'sails',
pass: '...',
};
现在,当我尝试运行应用程序时,出现以下错误:
Error: Ready check failed: NOAUTH Authentication required.
我不确定为什么pass: .
。不管用?还有什么我应该做的吗?
注意:我正在使用Google计算实例进行redis托管,我有一个允许访问的防火墙规则。
答案 0 :(得分:3)
我确实为我的问题找到了解决方案。我不确定它对你有多大用处,因为我相信我的情况有点不同。我在bitnami谷歌云计算实例上使用sails.js,我也在一个单独的bitnami实例上托管redis,我们有共同点。但是,我正在尝试连接到Redis以使用Kue。所以我没有使用我的配置/会话文件。我们仍然遇到相同的错误,因此解决方案是删除redis实例中的requiredpass,然后使用防火墙规则,只允许我的服务器访问Redis实例。
我认为根本问题是redis有任何尝试读/写数据存储的第二个密码提示。因此,从服务器传递密码只会让您登录,但不会让您访问数据,而是NOAUTH
错误。所以我认为实例的requiredpass
主要用于客户端,服务器端实例不需要它。这可能是我对如何使用Redis的天真,但我不知道如何从其他服务器输入密码到提示。我觉得防火墙规则对我来说现在很好,可以防止不需要的流量。
如果这是您想要做的/尝试,那么我为Google云执行此操作的方式是ssh进入Redis实例(通过您自己的命令行或通过Google提供的浏览器。然后编辑{{1找到带有sudo权限的文件。找到显示/opt/bitnami/redis/etc/redis.conf
的行并在其前面放置一个#来注释掉。现在要让它生效,那么你必须重新启动服务器。
Bitnami表示您可以使用requiredpass
执行此操作。但是,我收到了AUTH错误。因此,为了解决这个问题,我必须强制使用sudo /opt/bitnami/ctlscript.sh restart redis
终止进程,然后使用sudo pkill -9 -f redis-server
重新启动它。这应刷新配置文件,更新实例并允许服务器连接,而无需输入第二个提示密码。
如果您有任何疑问,请告诉我,我会尽可能地帮助您。
答案 1 :(得分:1)
您必须指定auth_pass
:
module.exports.session = {
adapter: 'socket.io-redis'
host: '10...',
port: 6379,
db: 'sails',
pass: '...',
auth_pass: redis_url.auth.split(":")[1]
};
<强>更新强>
密码:null;如果设置,客户端将在connect上运行redis auth命令。 别名auth_pass(node_redis&lt; 2.5必须使用auth_pass)