举例比如限制泰国地区的IP访问:

前提条件,安装了http geoip 或stream geoip模块的Nginx Plus或者开源nginx

Maxmind的GeoLite Legacy数据库

1.安装NginxPlus

yum -y install nginx-plus-module-geoip

在配置文件中开启GeoIP动态模块

load_module modules/ngx_http_geoip_module.so;

load_module modules/ngx_stream_geoip_module.so;

1.1 对于开源的Nginx

nginx -V 确保已经安装了geoip模块

2.然后从MaxMind下载ip库文件

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz

(GeoLite2-Country.mmdb)

配置地理位置数据库的路径

http语句中引用数据库文件

http {

...

geoip_country GeoIP/GeoIP.dat;

geoip_city GeoIP/GeoLiteCity.dat;

... }

通过geoip_country和geoip_city 指令的变量把数据传到map或split_client模块

map $geoip_country_content_codes $nearest_server {

default default {};

EU  eu;

NA  na;

AS  as;

AF  af;

...

}

然后可以根据 $nearest_server 变量传入的值选择一台upstream服务器;

......

server {

  listen  1235;

  proxy_pass $nearest_server;

...

   location / {
root /home/vpsee/www;
if ($geoip_country_code = CN) {
root /home/vpsee/cn;
}
if ($geoip_country_code = VN) {
root /home/vpsee/vn;
}

...

}

upstream eu {

server eu1.example.com:12345;

server eu2.example.com:12345;

}

http语句内嵌server语句实现将IP库文件,通过IP判断是否提供网页服务。

$geoip_city_content_code  变量

proxy_pass 去匹配相应的upstream服务器,进行响应即可。

Nginx使用GeoIP模块来限制地区访问的更多相关文章

  1. nginx应用geoip模块,实现不同地区访问不同页面的需求(实践版)

    https://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html       搞了几天没有搞定,这篇文章一下 ...

  2. 使用 Nginx 和 GeoIP 模块来处理不同国家的访问

    安装 Nginx因为要用到 http_geoip_module 模块,系统自带的 nginx 一般不带这个模块,所以要下载 nginx 源代码后自行编译: # wget http://nginx.or ...

  3. nginx使用ssl模块配置支持HTTPS访问

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求: 做一个网站域名为 www.localhost.cn 要求通过htt ...

  4. nginx使用ssl模块配置支持HTTPS访问【解决ssl错误】

    默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求:做一个网站域名为 www.localhost.cn 要求通过http ...

  5. nginx使用ssl模块配置支持HTTPS访问,腾讯云申请免费证书

    开始我尝试用 let's encrypt 让http 变 https 官方:https://github.com/certbot/certbot 参考:https://www.cnblogs.com/ ...

  6. nginx的ngx_http_geoip2模块以精准禁止特定地区IP访问

    要求:对网站的信息,比如某个访问节点不想国内或者国外的用户使用,禁止国内或者国外或者精确到某个城市的那种情况. 解决方式:1.Cloudfalre来实现禁止特定国家的ip访问,比较简单,但是需要mon ...

  7. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_modu ...

  8. (转)nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

    nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录 原文:http://www.cnblogs.com/kevingrace/p/6165572.html Nginx的geo模块 ...

  9. 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 前言 ...

随机推荐

  1. 前端笔记之React(八)上传&图片裁切

    一.上传 formidable天生可以处理上传的文件,非常简单就能持久上传的文件. 今天主要讲解的是,前后端的配合套路. 上传分为同步.异步.同步公司使用非常多,异步我们也会讲解. 1.1 先看一下a ...

  2. 洛谷P2763题解

    吐槽一下:蜜汁UKE是什么玩意?! 题目分析: 观察题面,对于给定的组卷要求,计算满足要求的组卷方案,可以发现这是一道明显的有条件的二分图匹配问题,于是考虑建模. 建一个超级源点,一个超级汇点:源点与 ...

  3. Spring Cloud 相关资料链接

    Spring Cloud中文网:https://springcloud.cc/ Spring Cloud API:https://springcloud.cc/spring-cloud-dalston ...

  4. Idea搭建Spring+SpringMvc+Mybatis框架集成项目

    1.新建maven项目 2.创建多模块 每个模块配置如父模块一样,除视图层 (视图层配置) 最后 common-通过模块,不依赖任何模块,有各种项目所需要用到的工具类 model- POJO.VO.D ...

  5. Java学习多线程第一天

    内容介绍 Thread 线程创建 线程池 线程状态图 1 多线程 1.1     多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序 ...

  6. iOS的录屏功能

    iOS的录屏功能其实没什么好说的,因为网上的教程很多,但是网上的Demo无一例外几乎都有一个bug,那就是iPad上会出现闪退,这也体现了国内的教程文档的一个特点,就是抄袭,教程几乎千篇一律,bug也 ...

  7. [转载]MongoDB管理基础

    1.  启动和停止MongoDB: 执行mongod命令启动MongoDB服务器.mongod有很多可配置的选项,我们通过mongod --help可以查看所有选项,这里仅介绍一些主要选项:    - ...

  8. mybatis学习的终极宝典

    **********************************************************************************************一:myba ...

  9. eclipse安装STS插件遇到的问题

    eclipse安装STS插件 第一次接触springboot,对于用惯了eclipse写代码的人来说,接受IDEA确实还要多花点时间去改变下,因为IDEA确实会节省下不必要的写代码时间.废话少说,直接 ...

  10. LSTM+CRF维特比解码过程

    题目:给定长度为n的序列,标签数为m(标签值表示为1,2,....,m),发射概率矩阵E(n * m),其中E[i][j]表示第i个词预测为标签j的发射概率,转移概率矩阵T(m*m),其中T[i][j ...