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”

CSS3动画事件

animationstart、animationend以及transitionend分别用于监听css3的关键帧动画的开始、结束以及css3过渡结束事件。

本文Demo:https://www.lyz810.com/demo/cssAnimationEvent/index.html

一、animationstart和animationend事件
animationstart事件在Animation动画开始时触发,对于低版本的webkit内核浏览器使用webkitAnimationStart事件
animationend事件在Animation动画停止时触发,对于低版本的webkit内核浏览器使用webkitAnimationEnd事件
用法示例:

document.querySelector('#test').addEventListener('animationstart', function(){
  console.log('动画开始');
});
document.querySelector('#test').addEventListener('animationend', function(){
  console.log('动画结束');
});

二、animationiteration事件
animationiteration事件会在Animation动画循环播放时触发,主要用于infinite类型的动画,会在每次循环播放完毕时触发。
无限循环的动画会触发animationstart、animationiteration两个事件。
对于低版本的webkit内核浏览器使用webkitAnimationIteration事件。
用法示例:

css:
@keyframes ani{
  from{margin-left: 0;}
  to{margin-left: 300px;}
}
#test{animation:ani 3s infinite;}

js:
document.querySelector('#test').addEventListener('animationiteration', function(){
  console.log('动画播放循环一次');
});

三、transitionend事件
transitionend事件在transition动画结束后触发。
用法示例:

document.querySelector('#test').addEventListener('transitionend', function(){
  console.log('过渡动画完毕');
});