<!-- review: finished -->

<a id="http-split-clients"></a>

# Split Clients

Модуль генерирует переменные для A/B-тестирования, канареечных релизов
и других сценариев, которые направляют определенный процент клиентов на один
сервер или конфигурацию, а остальных — куда-то еще.

<a id="configuration-example-40"></a>

## Пример конфигурации

```nginx
http {
    split_clients "${remote_addr}AAA" $variant {
                   0.5%               .one;
                   2.0%               .two;
                   *                  "";
    }

    server {
        location / {
            index index${variant}.html;
```

<a id="directives-43"></a>

## Директивы

<a id="index-0"></a>

<a id="id3"></a>

### split_clients

| [Синтаксис](https://angie.software//angie/docs/configuration/configfile.md#configfile)   | `split_clients` строка $переменная { ... }   |
|------------------------------------------------------------------------------------------|----------------------------------------------|
| По умолчанию                                                                             | —                                            |
| [Контекст](https://angie.software//angie/docs/configuration/configfile.md#configfile)    | http                                         |

Создает $переменную, хэшируя строку;
переменные в строке подставляются,
результат хэшируется,
затем по значению хэша выбирается строковое значение $переменной.

Функция хэширования использует
[MurmurHash2](https://en.wikipedia.org/wiki/MurmurHash#MurmurHash2)
(32 бит),
и весь диапазон ее значений
(с 0 по 4294967295)
сопоставляется с корзинами в порядке появления;
процентные величины определяют размер корзин.
В конце может стоять метасимвол (`*`);
хэши, не попавшие в другие корзины, сопоставляются с приданным ему значением.

Пример:

```nginx
split_clients "${remote_addr}AAA" $variant {
               0.5%               .one;
               2.0%               .two;
               *                  "";
}
```

Здесь после подстановки в строке `$*remote_addr*AAA`
значения хэша распределяются следующим образом:

- значения от 0 до 21474835 (0,5%) дают `.one`;
- значения от 21474836 до 107374180 (2%) дают `.two`;
- значения от 107374181 до 4294967295 (все остальные) дают `""`
  (пустую строку).
