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

NGINX 笔记 - GeoIP 限制策略配置相关推荐

  1. Nginx笔记-反向代理中配置WebSocket及设置超时

    这里贴下配置: ... server{listen 8888;server_name MyWeb;location / {proxy_pass http://xxx.xx.xx.xxx:xxxx;}l ...

  2. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  3. 详解Nginx的功能策略配置

    Nginx作为轻量级HTTP服务器,性能上占用资源少,支持多并发,功能上可以实现代理服务器可用于负载均衡,配置上简单灵活!将自己最近的文档整理一下,备以后使用,这里单从功能实现的基础配置上进行说明 负 ...

  4. 【笔记】nginx - 上:安装、配置(基础、rewrite 重写、proxy_pass 代理、ssl)

    官网:https://nginx.org/ 官方文档: Building nginx from Sources - http://nginx.org/en/docs/configure.html 视频 ...

  5. nginx笔记 安装nginx 配置 反向代理 多虚拟主机

    1,检测linux上是否 通过yum安装了nginx rpm   -qi  nginx 2.安装nginx之前的依赖包 yum install gcc patch libffi-devel pytho ...

  6. 学习笔记0518----nginx和php-fpm配置

    nginx配置 预习笔记 1. nginx负载均衡 1.1 创建一个nginx的负载均衡配置 1.2 安装bind-utils包 1.3 使用dig命令测试负载均衡 1.4 负载均衡扩展 2. 配置s ...

  7. ribbon设置权重_Ribbon负载均衡策略配置

    在这里吐槽一句:网上很多文章真是神坑,你不看还好,看了只会问题越来越多,就连之前的问题都没有解决!!! 不多说了,Ribbon作为后端负载均衡器,比Nginx更注重的是请求分发而不是承担并发,可以直接 ...

  8. Nginx负载均衡的详细配置及使用案例

    Nginx负载均衡的详细配置及使用案例详解 感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结.  ...

  9. 搭建nginx服务器及文件的配置

    一.搭建nginx服务器及平滑升级 1.搭建基本的nginx服务器 准备nginx-0.8和nginx-1.0两个源码包 [root@localhost nginx-package]# tar -zx ...

  10. Nginx —— nginx负载均衡的详细配置 以及 使用案例详解.

    1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器 ...

最新文章

  1. 使用git上传代码到github
  2. 64位 atol c linux_C 库函数
  3. python二级多少分过_python二级操作题与分析(2)
  4. oracle语句转成mysql语句_如何监控Mysql语句
  5. 如何使用HTML5创建在线精美简历
  6. 安装Win7系统时使用diskpart命令将GPT分区转换为MBR分区
  7. java程序设计_Java程序设计--接口interface(笔记)
  8. 【Linux】【Shell】【Basic】函数
  9. 局域网打印机怎么连接_怎么连接同事已共享的打印机?
  10. 9140cdn硒鼓停止_兄弟MFC-9140CDN加完粉怎么清零
  11. 获取China大陆IP段的范围
  12. 关于android的外文论文,毕业论文外文翻译-Android开发
  13. cpu倍频模式怎么调_BIOS:增加倍频比率调整选项
  14. Centos7下SVN服务端搭建以及hook应用
  15. SAP OOALV 动态设置单元格可否编辑
  16. 不再羡慕小说中的爱情...
  17. [Reverse]PC微信(一)个人数据基址
  18. 这个世界从来没有任何一件工作叫“钱多、事少、离家近”
  19. 大二见习长沙中电软件园
  20. 中国大学MOOC课程《Python语言程序设计》课后练习第一周

热门文章

  1. Windows10如何安装windows terminal
  2. php用putty安装吗,为什么通过Putty的SSH命令与PHP的phpseclib不同?
  3. 项目中对axios的全局封装
  4. 计算机二级C语言判断标准,2012年计算机等级考试二级C语言常见问题:标准输入输出库...
  5. preg_match 参数获取两个_摄像相机标定到底是啥?标定完成得到的参数有什么用?...
  6. ott盒子 MySQL_LAMP源码环境搭建与phpmyadmin的使用
  7. python并发编程 协程_Python并发编程协程之Gevent
  8. mysql拼装字段_Mysql 实现字段拼接的三个函数
  9. 请问投稿中要求上传的author_SCI投稿状态解析
  10. php获取mysqli_query内容,PHP mysqli_query() 函数 - PHP 基础教程