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

NGinx在同一个应用程序实例上拆分测试两个页面,nginx,Nginx,我正在尝试在一个web应用程序上使用一个主机名和实例对两个网页进行a/b拆分测试 以下是我努力实现的目标: HTTP请求/ 请求被代理到backend.app.com 请求被代理到backend.app.com/a或backend.app.com/b 理想情况下,这将是一个粘性会话,它将在会话期间保持适当的/a或/b,类似于应用程序池可以实现的功能。 可能吗?想法?您正在寻找指令 来自 在本例中,arg_标记几乎可以是您想要的任何变量 问具体问题也是如此。不是想法或建议。请参考帮助中心了解如何提

我正在尝试在一个web应用程序上使用一个主机名和实例对两个网页进行a/b拆分测试

以下是我努力实现的目标:

HTTP请求/ 请求被代理到backend.app.com 请求被代理到backend.app.com/a或backend.app.com/b 理想情况下,这将是一个粘性会话,它将在会话期间保持适当的/a或/b,类似于应用程序池可以实现的功能。 可能吗?想法?

您正在寻找指令

来自


在本例中,arg_标记几乎可以是您想要的任何变量

问具体问题也是如此。不是想法或建议。请参考帮助中心了解如何提问:谢谢,但我不知道如何使用arg_令牌在两条路径中传递。这是一般问题的一般示例。从这里开始,您必须研究处理用例的不同可能方法。有很多关于split_客户端的文章,所以我祝你好运。@DarrenBounds我认为如果你将$remote_addr和$remote_port组合用于哈希,nginx将在会话期间使用相同的目标url/a或/b,正如你在问题中所问的那样。
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;
        }
    }
}