Модуль http_split_clients

Модуль http_split_clients#

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

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

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

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

Директивы#

split_clients#

Синтаксис:

split_clients строка $переменная { … }

Умолчание:

Контекст:

http

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

Функция хэширования использует MurmurHash2 (32 бит), и весь диапазон ее значений (с 0 по 4294967295) сопоставляется с корзинами в порядке появления; процентные величины определяют размер корзин. В конце может стоять метасимвол (*); хэши, не попавшие в другие корзины, сопоставляются с приданным ему значением.

Пример:

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 (все остальные) дают «» (пустую строку).