NGinx在同一应用程序实例上拆分测试两个页面

时间:2019-01-29 16:57:18

标签: nginx

我正在尝试使用单个主机名和实例在单个Web应用程序上对两个网页进行A / B(拆分)测试。

这是我要实现的目标:

  1. HTTP请求/
  2. 请求被代理到backend.app.com
  3. 请求被代理到backend.app.com/a或backend.app.com/b
  4. 理想情况下,这将是一个粘性会话,在会话期间将维持适当的/ a或/ b,类似于使用应用程序池可以实现的。

可能吗?想法?

1 个答案:

答案 0 :(得分:1)

您正在寻找split_clients指令。

来自https://www.nginx.com/blog/performing-a-b-testing-nginx-plus/

的示例
http {
    # ...
    # application version 1a 
    upstream version_1a {
        server 10.0.0.100:3001;
        server 10.0.0.101:3001;
    }

    # application version 1b
    upstream version_1b {
        server 10.0.0.104:6002;
        server 10.0.0.105:6002;
    }

    split_clients "${arg_token}" $appversion {
        95%     version_1a;
        *       version_1b;
    }

    server {
        # ...
        listen 80;
        location / {
            proxy_set_header Host $host;
            proxy_pass http://$appversion;
        }
    }
}

在这种情况下,arg_token几乎可以是您想要的任何变量。