<!-- review: finished -->

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

# Split Clients

El módulo genera variables para pruebas A/B, despliegues canarios
y otros escenarios que dirigen un porcentaje específico de clientes a un
servidor o configuración mientras dirigen el resto a otro lugar.

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

## Ejemplo de configuración

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

## Directivas

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

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

### split_clients

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `split_clients` string $variable { ... }   |
|--------------------------------------------------------------------------------------------|--------------------------------------------|
| Predeterminado                                                                             | —                                          |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | stream                                     |

Crea una $variable aplicando un hash a la string;
las variables en la string se sustituyen,
el resultado se somete a hash
y el valor del hash se usa para seleccionar el valor de cadena de la $variable.

La función de hash utiliza
[MurmurHash2](https://es.wikipedia.org/wiki/MurmurHash#MurmurHash2)
(32 bits),
y todo su rango de valores
(0 a 4294967295)
se asigna a grupos en orden de aparición;
los porcentajes determinan el tamaño de los grupos.
Un comodín (`*`) puede aparecer al final;
los hashes que no caigan en otros grupos se asignan a su valor asignado.

Ejemplo:

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

Aquí, tras la sustitución en la cadena `$*remote_addr*AAA`,
los valores de hash se distribuyen de la siguiente manera:

- valores de 0 a 21474835 (0,5%) producen `.one`
- valores de 21474836 a 107374180 (2%) producen `.two`
- valores de 107374181 a 4294967295 (todos los demás) producen `""`
  (una cadena vacía)
