nginx中文文档-ngx_stream_split_clients_module

此页面版本:2016-08-23,57bc4b4b-98b
ngx_stream_split_clients_module模块(1.11.3+)创建用于A/B测试(也叫作分离测试)的变量。

示例配置

stream {
    ...
    split_clients "${remote_addr}AAA" $upstream {
                  0.5%                feature_test1;
                  2.0%                feature_test2;
                  *                   production;
    }

    server {
        ...
        proxy_pass $upstream;
    }
}

split_clients

语法:split_clients string $variable { … }
默认:—
上下文:stream

为A/B测试创建变量,例如:

split_clients "${remote_addr}AAA" $variant {
               0.5%               .one;
               2.0%               .two;
               *                  "";
}

原始字符串的值通过MurmurHash2进行哈希。在给出的示例中,哈希值从0到21474835(0.5%)对应的$variant变量值为“.one”,哈希值从21474836到107374180(2%)对应的值为“.two”,哈希值从107374181到4294967295对应的值为“”(空字符串)。

nginx中文文档-ngx_stream_geoip_module

此页面版本:2016-08-23,57bc4b4b-c73
ngx_stream_geoip_module模块(1.11.3+)创建变量,变量值依赖于客户端的IP地址,使用预编译的MaxMind数据库。

当使用的数据库支持IPv6时,IPv4的地址会被映射为IPv6的地址。
该模块默认不会构建,需要使用–with-stream_geoip_module参数进行编译。
该模块需要MaxMind GeoIP库。

示例配置

stream {
    geoip_country         GeoIP.dat;
    geoip_city            GeoLiteCity.dat;

    map $geoip_city_continent_code $nearest_server {
        default        example.com;
        EU          eu.example.com;
        NA          na.example.com;
        AS          as.example.com;
    }
   ...
}

geoip_country

语法:geoip_country file
默认:—
上下文:stream

指定一个数据库用于决定依赖于客户端IP的国家。下面的变量在使用数据库时可用:
$geoip_country_code
两个字母的国家代码,例如“RU”、“US”

$geoip_country_code3
三个字母的国家代码,例如“RUS”、“USA”

$geoip_country_name
国家名称,例如“Russian Federation”、“United States”

geoip_city

语法:geoip_city file
默认:—
上下文:stream

指定一个数据库用于决定依赖于客户端IP的国家区域以及城市。下面的变量在使用数据库时可用:

$geoip_area_code
电话区号(仅美国)
这个变量可能包含过时的信息,因为相应的数据库字段可能会过时。

$geoip_city_continent_code
两个字母的大陆编码,例如“EU”、“NA”

$geoip_city_country_code
两个字母的国家编码,例如“RU”、“US”

$geoip_city_country_code3
三个字母的国家编码,例如“RUS”、“USA”

$geoip_city_country_name
国家名称,例如“Russian Federation”、“United States”

$geoip_dma_code
美国DMA区域编码(也成为地铁编码),依据Google AdWords API

$geoip_latitude
纬度

$geoip_longitude
经度

$geoip_region
两个标识符的国家行政区代码(行政区、地域、州、省、联邦等),例如“48”、“DC”

$geoip_region_name
国家行政区名称(行政区、地域、州、省、联邦等),例如“Moscow City”、“District of Columbia”

$geoip_city
城市名称,例如“Moscow”、“Washington”

$geoip_postal_code
邮政编码

geoip_org

语法:geoip_org file
默认:—
上下文:stream

指定一个数据库,用于决定依赖于客户端IP地址的组织。下列变量在使用数据库时可用:

$geoip_org
组织名称,例如“The University of Melbourne”