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

o7jaxewo  于 2022-09-21  发布在  Redis
关注(0)|答案(2)|浏览(169)

问题

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

bxjv4tth

bxjv4tth1#

原因

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.rejectUnAuthority设置为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);
nx7onnlm

nx7onnlm2#

添加(在约曼最好的答案之上)-

如果在使用Django-RQ和最新的Redis插件时,您发现自己在Heroku上遇到了SSL验证错误-要知道Django的settings.py上的RQ_Queues定义支持SSL_CERT_Reqs,您可以专门将其设置为None来解决这些问题。
(灵感来自https://paltman.com/how-to-turn-off-ssl-verify-django-rq-heroku-redis/)。
请注意,它需要将Django-RQ提升到2.5.1以上的版本。

这可能与所有只将Redis应用于排队(例如,使用RedisRQ)而不是缓存的用户相关。

相关问题