<!-- review: finished -->
<!-- review: finished -->

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

# Split Clients

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

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

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

```nginx
stream {
    # ...
    split_clients "${remote_addr}AAA" $upstream {
                  0.5%                feature_test1;
                  2.0%                feature_test2;
                  *                   production;
    }

    server {
        # ...
        proxy_pass $upstream;
    }
}
```

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

## Директивы

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

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

### split_clients

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

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

Функция хэширования использует
[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 (все остальные) дают `""`
  (пустую строку).
