ssl - Heroku Redis 从 Hobby 升级到 Premium 0 后 Heroku 崩溃

标签 ssl heroku redis bull

问题

当我从 Heroku Redis Hobby 计划升级到 Heroku Redis Premium 0 计划时,Heroku 不断崩溃并出现 H10 错误。

最佳答案

原因

Redis 6 需要 TLS 才能连接。但是,Heroku 管理从路由器级别到涉及自签名证书的应用程序级别的请求。事实证明,Heroku 在路由器级别终止 SSL,并通过 HTTP 将请求从那里转发到应用程序,而一切都在 Heroku 的防火墙和安全措施后面。

有助于查找原因的链接:

https://ogirginc.github.io/en/heroku-redis-ssl-error

How to enable TLS for Redis 6 on Sidekiq?

解决方案

自定义传递到 Redis 的选项,以便将 tls.rejectUnauthorized 设置为 false。

const Queue = require('bull');
const redisUrlParse = require('redis-url-parse');

const REDIS_URL = process.env.REDIS_URL || 'redis://127.0.0.1:6379';
const redisUrlParsed = redisUrlParse(REDIS_URL);
const { host, port, password } = redisUrlParsed;
const bullOptions = REDIS_URL.includes('rediss://')
  ? {
      redis: {
        port: Number(port),
        host,
        password,
        tls: {
          rejectUnauthorized: false,
        },
      },
    }
  : REDIS_URL;

const workQueue = new Queue('work', bullOptions);

关于ssl - Heroku Redis 从 Hobby 升级到 Premium 0 后 Heroku 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71862393/

相关文章:

python - 在 Python 中通过 TCP 代理连接发送 SSL 数据

node.js - newman CLI 在 teamcity 构建中返回 "error: unable to get local issuer certificate"

java - handshake_failure 找不到合适的证书

javascript - Heroku Node.js 应用程序 "Process exited with status 1"和错误 h10

redis - 概念化 Redis 图?

python - Redis 锁定一个 KEY

wordpress - www.example.com 不重定向到 HTTPS

android - 具有 Google Domains URL 的 Heroku 站点未在 Android KitKat 上加载

ruby-on-rails - Heroku 负责多个数据库服务器?

c - 为什么在 redis 的 sdahdr 结构中使用 char buf[] 而不是 char *buf