2019-05-17 nginx的map和split_clien

2019-05-17  本文已影响0人  张大志的博客
map $http_host $name {
         hostnames;
         default 0;
         ~map.zhang\w+\.com 1;  #表示当请求的host匹配此规则时$name=1,默认$name=0
         *.aaa.com 2;
         map.aa.com 3;
         map.aaa.* 4;
}
map $http_user_agent $mobile {
         default 0;
         "~Opera Mini" 1;  #表示当请求的浏览器类型匹配此规则时 $mobile=1,默认$mobile=0
}
server {
      listen 8080;
      default_type text/plain;
      location / {
       return 200 '$name:$mobile\n';
      }

}
[root@hk conf.d]#curl -H 'host:map.aaa.cn' 127.0.0.1:8080
4:0
[root@hk conf.d]#curl -H 'host:*.aaa.com' 127.0.0.1:8080
2:0
[root@hk conf.d]#curl -H 'host:map.zhangdazhi.com' 127.0.0.1:8080
3:0

image.png
split_clients "${http_testcli}" $variant {  
       0.51% .one;  #表示请求的头部进行hash计算后/最大值的百分比落在此范围时 $variant=.one
       20.0% .two;
       50.5% .three;
       * "";
}
server {
      server_name split_clients.zhangdazhi.com;
        error_log /var/log/error.log debug;
        default_type text/plain;
        location / {
          return 200 'ABtestfile$variant\n';
         }
}
[root@hk conf.d]#nginx -s reload
[root@hk conf.d]#curl -H 'testcli:abcdefg' split_clients.zhangdazhi.com
ABtestfile
[root@hk conf.d]#curl -H 'testcli:abcdefghg' split_clients.zhangdazhi.com
ABtestfile.three

根据客户端地址创建新变量


image.png
image.png
geo $contury {
     default ZZ;
     #include conf/geo.conf;
    proxy 122.230.59.111;   #指定可信地址,此地址为要访问的客户端主机的真实ip,也就是X-Forwarded-For的第一个ip
    127.0.0.0/24 US; #当X-Forwarded-For的最后一个ip匹配此ip范围时,$contury=US
    127.0.0.1/32 RU;
    10.1.0.0/16 MU;
    192.168.1.0/24 UK;
 }

server {
    server_name geo.aaa.com;
    location / {
     return 200 '$contury\n';
 }
}
root@dell-PowerEdge-R730:/var/log/nginx# curl -H 'X-Forwarded-For:122.230.59.111,192.168.1.3' geo.aaa.com
UK
上一篇 下一篇

猜你喜欢

热点阅读