![](https://storage.yandexcloud.net/webazon/github/rbalancer.png)

------

# r-balanser-ssl

#### Авторская  разработка безопасного и отказоустойчивого обмена данными между клиентом и кластером серверов по технологии POST запросов на основе криптографического шифрования RSA-ключами и подтверждения полномочий JWT токеном.

------

## Установка

Можно установить используя менеджер пакетов [Composer](https://getcomposer.org)

```php
$ composer require webazon/r-balancer-ssl
```

или скачать пакет с [GitHub](https://github.com/katsef/crypto-ssl)

------

## Инициализация

```php
require ______DIR__ . '/vendor/autoload.php';

$client = new Webazon\RBalancerSSL\Client([string $options]);
```

***$options*  - массив или объект инициализирующих индивидуальных параметров где:**

- hosts [array]            -  массив HOSTов (IP) куда направляются запросы;
  - host 1 		       -  первый сервер;
  - host 2                -  второй сервер;
- path [string]            -  путь запроса (один для общего кластера);
- jwt [string]               -  ***JWT*** токен аутентификации (***Bearer authentication***) в заголовке запроса;
- public_key [string]  -  Публичный ключ для шифрования запросов;
- private_key [string] -  Приватный ключ для расшифровки ответов;
- distr [boolen]           -  флаг режима работы. (***false/true***) Если установлен ***(true***), то запросы отправляются поочерёдно в рандомном порядке на все кластера серверов. Если нет (***false***), то все запросы идут на основной мощный сервер и только если он не отвечает, то запрос перенаправляется на второй сервер.



P.S. ***$options*** не обязательный параметр. Если отсутствуют, то данные берутся из конфигурационного файла индивидуальных настроек ***`rbalancerssl.json`*** из папки ***`security`*** в пользовательском корне клиентского сервера. (Или где-нибудь на устройстве в надёжно защищённом месте). Папку ***security*** также необходимо "закрыть" от общего доступа, поместив в неё файл **.htaccess** с содержимом **Deny from all** и **Options -Indexes** (или как директиву в *httpd.conf* общих настроек **Apache** ( если это вдруг не сделано. Хм.)

Удобная [**программка**](https://tomeko.net/software/JSONedit/) для работы с файлами формата **JSON**

