Nginx ngx_http_split_clients_module模块基本指令整理

  categories:nginx  author:

原创文章,转载请指明出处并保留原文url地址

本文主要针对nginx的ngx_http_split_clients_module模块做简单介绍,本文具体包括如下指令:split_clients

该ngx_http_split_clients_module模块创建适合于A/B测试变量,也称为分割测试。

(A/B 测试通常用来测量两个或多个方案在某一单一维度上的绩效表现。通俗的说,就是用尽可能科学严谨的方法,对比方案之间的优劣。这种方法虽然是穿白大褂的科学家发明并用于科学实验,但现在它已经被善于借鉴的市场专家、用户体验专家们广泛地应用在市场研究、产品界面方案评估等更“感性”的领域。

对于界面改进设计,A/B测试通常由控制版本和对照版本组成,即A为当前线上方案,B为改进方案。通过小流量线上平台测试,考察对方案评估比较重要的绩效数据,如点击率、停留时间、出错率等。

为什么要进行A/B测试?

首先,在用户体验行业,哪个方案好哪个方案要被拍掉这样的讨论、辩论、争论无时无刻不在世界各地重复上演。不知道听谁的,主要是因为大家的理由都来自于“推理”。虽然UCD已经深入人心,但仍然避免不了博弈各方自诩为用户代言人,推想用户的行为。而此时,A/B测试的威力就变得特别显眼。它在用于界面方案评估时可以提供客观、准确的数据。哪种方案点击率高、哪种方案更有利于将用户的点击转化为在线购买行为等问题,可以通过数据获得清晰、明确的结论。让数据说话,大家不知道要少费多少口舌,为公司省下多少矿泉水呢。)

示例如下:

    http {

        split_clients "${remote_addr}AAA" $variant {

                       0.5%               .one;

                       2.0%               .two;

                       *                  "";

        }

        server {

            location / {

                index index${variant}.html;

Nginx原文:

The ngx_http_split_clients_module module creates variables suitable for A/B testing, also known as split testing.

Example Configuration

    http {

        split_clients "${remote_addr}AAA" $variant {

                       0.5%               .one;

                       2.0%               .two;

                       *                  "";

        }

        server {

            location / {

                index index${variant}.html;

1. split_clients

syntax:

split_clients  string$variable{ … }

default:

context:

http

创建的A/B测试一个变量,例如:

split_clients "${remote_addr}AAA" $variant {

                   0.5%               .one;

                   2.0%               .two;

                   *                  "";

    }

初始字符串的值使用murmurhash2散列。在给出的例子中,哈希值从0到21474835(0.5%)对应于为Variant变量的价值为”.one”,哈希值从21474836到107374180(2%)对应值”.two“,哈希值从107374181到4294967295对应值“”(空字符串)。

Nginx原文:

Creates a variable for A/B testing, for example:

    split_clients "${remote_addr}AAA" $variant {

                   0.5%               .one;

                   2.0%               .two;

                   *                  "";

    }

The value of the original string is hashed using MurmurHash2. In the example given, hash values from 0 to 21474835 (0.5%) correspond to the $variant variable taking the value ".one", hash values from 21474836 to 107374180 (2%) correspond to the value ".two", and hash values from 107374181 to 4294967295 correspond to the value "" (an empty string).



快乐成长 每天进步一点点