Heroku Redis 附加错误错误:1408F10B:SSL 例程:ssl3_get_record:版本号错误

dno*_*be1 8 heroku node.js heroku-redis

将我的 Heroku Redis 插件从 v4 升级到 v6.2.3 后,Heroku papertrail 日志显示以下错误:Error accepting a client connection: error:1408F10B:SSL routines:ssl3_get_record:wrong version number
我正在使用 NodeJs 和bullnpm 包 ( https://www.npmjs.com/package/bull ) 连接到 Redis。我发现了与此错误相关的类似问题以及 Heroku 文档,并基于此我将我的bullredis 选项设置为以下内容:

redis: {
    host: redisURL.hostname,
    port: Number(redisURL.port),
    password: redisURL.password,
    tls: {
      rejectUnauthorized: false,
    },
  },
Run Code Online (Sandbox Code Playgroud)

注意tls参数。我已将其设置为 Heroku 的建议: https: //devcenter.heroku.com/articles/heroku-redis#connecting-in-node-js

在卡住了一段时间后,我尝试简单地注释掉连接的任何客户端代码到 Redis,删除该附加组件,然后重新配置该附加组件。当我这样做时,我预计在 papertrail 中不会看到 redis 日志,但即使没有运行连接到 redis 的代码,我仍然看到相同的错误...这让我相信这可能是实际 Redis 添加上的设置- 例如,而不是我的代码有问题,但我不知所措。

更新:

我登录了 redis:cli 并做了一些调查。client list显示 2 个客户端连接。1 是我在终端中运行的 redis:cli 的实例,另一个是带有标志的客户端,该标志表示“客户端是到此实例的副本节点连接”(请参阅​​ https://redis.io/commands /客户列表)。有趣的是 papertrail 中记录的错误显示了存在 SSL 错误的客户端连接的文件描述符fd=12,而 中显示的 2 个客户端client list具有文件描述符fd=10fd=11。因此,必须有另一个客户端连接fd=12未出现在client list命令中,从而导致上面显示的错误。

Jas*_*nis 2

遇到了同样的问题。另外rejectUnauthorized: false,添加requestCert: true,为我解决了这个问题。此外,一些客户需要agent: false,(但我使用的 Bull 版本无法识别该参数)

  redis: {
    host: redisURL.hostname,
    port: Number(redisURL.port),
    password: redisURL.password,
    tls: {
      rejectUnauthorized: false,
      requestCert: true,
      // agent: false, (not all clients accept this)
    },
  },
Run Code Online (Sandbox Code Playgroud)