<!-- review: finished -->

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

# Split Clients

O módulo gera variáveis para testes A/B, lançamentos canário e outros cenários
que direcionam uma certa porcentagem de clientes para um servidor ou configuração
enquanto roteiam o restante para outro lugar.

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

## Exemplo de Configuração

```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>

## Diretivas

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

<a id="id1"></a>

### split_clients

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `split_clients` string $variable { ... }   |
|-------------------------------------------------------------------------------------------|--------------------------------------------|
| Padrão                                                                                    | —                                          |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                                       |

Cria uma $variable fazendo hash da string;
variáveis na string são substituídas,
o resultado é transformado em hash,
então o valor do hash é usado para selecionar o valor string da $variable.

A função hash usa
[MurmurHash2](https://en.wikipedia.org/wiki/MurmurHash#MurmurHash2)
(32-bit),
e toda sua faixa de valores
(0 a 4294967295)
é mapeada para buckets em ordem de aparição;
as porcentagens determinam o tamanho dos buckets.
Um curinga (`*`) pode ocorrer por último;
hashes que não se encaixam em outros buckets são mapeados para seu valor atribuído.

Exemplo:

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

Aqui, após a substituição na string `$*remote_addr*AAA`,
os valores de hash são distribuídos da seguinte forma:

- valores de 0 a 21474835 (0,5%) produzem `.one`;
- valores de 21474836 a 107374180 (2%) produzem `.two`;
- valores de 107374181 a 4294967295 (todos os outros) produzem `""`
  (string vazia).
