2017-01-20 3 views
2

Я пытаюсь подключиться к Redis с predis 1.1 и SSL, используя информацию https://github.com/nrk/predis, где в данном примере используется следующая конфигурация:Laravel + Redis Cache через SSL?

// Named array of connection parameters: 
$client = new Predis\Client([ 
    'scheme' => 'tls', 
    'ssl' => ['cafile' => 'private.pem', 'verify_peer' => true], 
]); 
конфигурации

My Laravel выглядит следующим образом:

'redis' => [ 
     'client' => 'predis', 
     'cluster' => env('REDIS_CLUSTER', false), 

     'default' => [ 
      'host' => env('REDIS_HOST', 'localhost'), 
      'password' => env('REDIS_PASSWORD', null), 
      'port' => env('REDIS_PORT', 6379), 
      'database' => 0, 
     ], 

     'options' => [ 
      'cluster' => 'redis', 
      'parameters' => ['password' => env('REDIS_PASSWORD', null)], 
      'scheme' => 'tls', 
      'ssl' => ['verify_peer' => false], 
     ], 
    ], 

Поскольку у меня нет ключа, используемого для SSL, я отключил проверку сверстников (согласно http://php.net/manual/en/context.ssl.php).

К сожалению, я получаю следующее сообщение об ошибке:

ConnectionException in AbstractConnection.php line 155: 
Error while reading line from the server. [tcp://MY_REDIS_SERVER_URL:6380] 

Предложения приветствуются :)

+0

Пожалуйста, разместите файл .env. Ошибка заключается в том, где указано MY_REDIS_SERVER_URL в вашем .env – Paras

+0

MY_REDIS_SERVER_URL - это просто URL-адрес сервера Redis. Я могу добраться до него через порт 6379, но не через 6380. Оба должны быть доступны (это кэш Azure Redis, с 6380 открыт по умолчанию). –

+0

Вы нашли решение для этого? – codiaf

ответ

0

Я был в состоянии заставить его работать!

Вы должны переместить «схему» от 'options' к 'default':

Мой рабочий конфиг:

'redis' => [ 
    'client' => 'predis', 
    'cluster' => env('REDIS_CLUSTER', false), 

    'default' => [ 
     'scheme' => 'tls', 
     'host' => env('REDIS_HOST', 'localhost'), 
     'password' => env('REDIS_PASSWORD', null), 
     'port' => env('REDIS_PORT', 6379), 
     'database' => 0, 
    ], 

    'options' => [ 
     'parameters' => ['password' => env('REDIS_PASSWORD', null)], 
     'ssl' => ['verify_peer' => false], 
    ], 
], 

Примечание: Я также удалил вариант 'cluster' от 'options', но я не подозреваю, что это для того, чтобы сделать это с помощью этой проблемы.

В моем окончательном конфиге я изменил его на: 'scheme' => env('REDIS_SCHEME', 'tcp'),, а затем определил REDIS_SCHEME=tls в моем env файле.

Протестировано с помощью AWS ElastiCache с включенным TLS.

 Смежные вопросы

  • Нет связанных вопросов^_^