nginx:split_客户端内部的变量扩展不工作?

nginx:split_客户端内部的变量扩展不工作?,nginx,Nginx,我有以下配置: map $host $variant_a { default 'a'; } map $host $variant_b { default 'b'; } map $host $variant_c { default 'c'; } map $host $variant_d { default 'd'; } map $host $variant_default { default 'default'; } # a/b testing split_clients "a

我有以下配置:

map $host $variant_a {
  default 'a';
}
map $host $variant_b {
  default 'b';
}
map $host $variant_c {
  default 'c';
}
map $host $variant_d {
  default 'd';
}
map $host $variant_default {
  default 'default';
}
# a/b testing
split_clients "abtest${remote_addr}${http_user_agent}${date_gmt}" $variant_chosen {
    20%     $variant_a;
    20%     $variant_b;
    20%     $variant_c;
    20%     $variant_d;
    20%     $variant_default;
}

server {
    # defaults test independent
    listen 80;
    server_name _;
    root /home/vagrant/www;
    index index.html;
    error_page 404 = 404.html;
    error_page 403 = 404.html;

    location / {
        echo a=$variant_a,variant_chosen=$variant_chosen
    }

}
当我对服务器执行查询时:

curl -i http://192.168.33.10/
我可以看到
'split\u clients'
中的变量从未展开过

样本输出:

vagrant@precise32:~/www$ curl -i http://192.168.33.10/
HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Mon, 04 May 2015 15:46:17 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: keep-alive

a=a,variant_chosen=$variant_default
有人知道为什么变量没有展开吗

非常感谢您的帮助

干杯
marcel

文档并没有说您可以在
split_clients
中使用变量,所以它只是简单的字符串。您真正想做什么?我找到了另一种方法来实现我想要的东西。我仍然想知道为什么变量没有展开。知道吗?他们为什么要这么做?在很多地方,nginx故意或历史上不期望变量,也不扩展它们。可能
split_客户端
就是其中之一。您可以提供一个补丁来支持变量,但是这里几乎不需要它们。这可能是一个答案。是否有文档说明变量将在何处展开和不展开?干杯