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_客户端
就是其中之一。您可以提供一个补丁来支持变量,但是这里几乎不需要它们。这可能是一个答案。是否有文档说明变量将在何处展开和不展开?干杯