NGINX 笔记 - GeoIP 限制策略配置

NGINX 笔记 - GeoIP 限制策略配置

nginx.conf

通过模块 mapgeopip 组合配置实现GeoIP区域限制,如以下示例:

  1. 组合$http_host#$geoip_country_code 作为国家机构代码 hash key;
  2. 组合$http_host#$geoip_city 作为城市代码 hash key;
  3. 开启 hostnames 匹配泛域名(可根据需要配置);
 	map $http_host#$geoip_country_code $site_country {
        hostnames;
        default 0;
        www.kangzy.com#     1;
        *.kangzy.com#       0;
        *.kangzy.com#CN     1;
    }
    # 
    map $http_host#$geoip_city $site_city {
        hostnames;
        default 0;
        www.kangzy.com#         0;
        *.kangzy.com#           0;
        *.kangzy.com#changsha   1;
    }

第一个map配置块:

  1. 对未匹配到任意国家的www.kangzy.com设置为1;
  2. 对未匹配到任意国家的*.kangzy.com设置为0;
  3. 匹配到国家CN*.kangzy.com设置为1;

第二个map配置块:

  1. 对未匹配到任意城市的www.kangzy.com设置为0;
  2. 对未匹配到任意城市的*.kangzy.com设置为0;
  3. 匹配到城市CN*.kangzy.com设置为1;

map

map_hash_bucket_size 128;
map_hash_max_size 45948; 

测试

# curl -v http://www.kangzy.com/ --resolve www.kangzy.com:80:A.B.C.E

会根据当前IP输出以下信息:

# curl -v http://www.kangzy.com/ --resolve www.kangzy.com:80:A.B.C.E
* Added www.kangzy.com:80:A.B.C.E to DNS cache
* About to connect() to www.kangzy.com port 80 (#0)
*   Trying A.B.C.E...
* Connected to www.kangzy.com (A.B.C.E) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
> Host: www.kangzy.com
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
> Accept-Encoding: gzip, deflate, sdch, br
> Accept-Language: zh-CN,zh;q=0.8
> Connection: keep-alive
>
< HTTP/1.1 200 OK
< Server: rednetcloud/3.0.9
< Date: Fri, 23 Nov 2018 04:58:27 GMT
< Content-Type: text/plain
< Transfer-Encoding: chunked
< Connection: keep-alive
<
Host: www.kangzy.com Server: www.kangzy.com Country: CN City: Changsha Region: 11 Allow: 1 1

其中输出内容中

Host: www.kangzy.com Server: www.kangzy.com Country: CN City: Changsha Region: 11 Allow: 1 1

分别输出 $http_host $server_name $geoip_country_code $geoip_city $site_country $site_city.

参考

ngx_http_map_module

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值