Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Heroku Redis-Redis::CannotConnectError:在127.0.0.1:6372连接到Redis时出错-证书验证失败_Ruby_Heroku_Redis - Fatal编程技术网

Ruby Heroku Redis-Redis::CannotConnectError:在127.0.0.1:6372连接到Redis时出错-证书验证失败

Ruby Heroku Redis-Redis::CannotConnectError:在127.0.0.1:6372连接到Redis时出错-证书验证失败,ruby,heroku,redis,Ruby,Heroku,Redis,当我在Heroku上第一次调用sidekiq时,抛出以下错误: Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6372 这当然不是我的Heroku:Redis的IP。该URL在我的环境变量中定义为: rediss://:blahblah@ecmore-numbers-here.compute-1.amazonaws.com:port 有趣的是,在Heroku控制台中,我这样做: redis = Redis.

当我在Heroku上第一次调用sidekiq时,抛出以下错误:

Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6372
这当然不是我的Heroku:Redis的IP。该URL在我的环境变量中定义为:

rediss://:blahblah@ecmore-numbers-here.compute-1.amazonaws.com:port
有趣的是,在Heroku控制台中,我这样做:

redis = Redis.new
正确返回:

=> #<Redis client v4.2.5 for redis://blah-blah-blah.compute-1.amazonaws.com:port/0>
我得到:

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain))
我的
sidekiq.rb中有以下内容

require 'sidekiq'

Sidekiq.configure_client do |config|
  Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes
  if Rails.env.production?
    url = URI.parse(ENV["REDIS_URL"])
    url.scheme = "rediss"
    url.port = Integer(url.port) + 1
    config.redis = {
      url: url.to_s,
      network_timeout: 5,
      ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
    }
  end
end

Sidekiq.configure_server do |config|
  Sidekiq::Status.configure_server_middleware config, expiration: 30.minutes
  Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes
  if Rails.env.production?
    url = URI.parse(ENV["REDIS_URL"])
    url.scheme = "rediss"
    url.port = Integer(url.port) + 1
    config.redis = {
      url: url.to_s,
      network_timeout: 5,
      ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
    }
  end
end
require 'uri'
url = URI.parse(ENV["REDIS_URL"])
url.scheme = "rediss"
url.port = Integer(url.port) + 1
$redis = Redis.new(url: url, driver: :ruby, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
这是我的
redis.rb

require 'sidekiq'

Sidekiq.configure_client do |config|
  Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes
  if Rails.env.production?
    url = URI.parse(ENV["REDIS_URL"])
    url.scheme = "rediss"
    url.port = Integer(url.port) + 1
    config.redis = {
      url: url.to_s,
      network_timeout: 5,
      ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
    }
  end
end

Sidekiq.configure_server do |config|
  Sidekiq::Status.configure_server_middleware config, expiration: 30.minutes
  Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes
  if Rails.env.production?
    url = URI.parse(ENV["REDIS_URL"])
    url.scheme = "rediss"
    url.port = Integer(url.port) + 1
    config.redis = {
      url: url.to_s,
      network_timeout: 5,
      ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE }
    }
  end
end
require 'uri'
url = URI.parse(ENV["REDIS_URL"])
url.scheme = "rediss"
url.port = Integer(url.port) + 1
$redis = Redis.new(url: url, driver: :ruby, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
Procfile

release: bin/rails db:migrate
web: bin/start-stunnel bin/rails server -p ${PORT:-5000} -e $RAILS_ENV
worker: bin/start-stunnel bundle exec sidekiq
我在跑步 redis-4.2.5 sidekiq-6.2.0
ruby-2.6.5

因此它是一个ssl验证证书错误。我也犯了同样的错误,并通过github找到了解决方案

我尝试将verify_模式发送到redis实例的ssl_参数中,如下所示

redis = Redis.new(ssl_params: {verify_mode: OpenSSL::SSL::VERIFY_NONE})
你会发现的


另外还有另一个标志
ssl:true或false
您也可以使用它

您尝试过将Redis更新到v5或v6吗?请尝试
Redis=Redis.new(ssl\u参数:{verify\u mode:OpenSSL::ssl::verify\u NONE})
然后
Redis.set