当前位置: 首页 > news >正文

nginx使用GeoIP限制访问并支持白名单

 

要使用GeoIP,需要重新编译Nginx,我的系统是centos6.5,nginx用的是tengine,需要的软件包:
gcc、gcc-c++、 openssl、 openssl-devel、geoIP library、GeoLite Country、GeoLite City、pcre、tengine2

1.下载需要的软件包

wget http://tengine.taobao.org/download/tengine-2.0.3.tar.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.zip

2.安装编译用到的软件

yum install gcc gcc-c++ openssl openssl-devel

3.编译GeoIP library

gunzip GeoIP.tar.gz && tar -xvf GeoIP.tar && cd GeoIP-1.4.8 
./configure && make && make install

如果不编译GeoIP library,在编译nginx时会提示

the GeoIP module requires the GeoIP library

4.编译nginx
先解压pcre在执行已下命令:

./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_stub_status_module --without-select_module --without-poll_module --with-http_geoip_module --with-http_ssl_module --with-openssl-opt=enable-tlsext --with-pcre=../pcre-8.33
make && make install

5.配置GeoIP

gunzip GeoLiteCity.dat.gz  && gunzip GeoIP.dat.gz

将这两个解压后的库文件移到nginx的conf目录下,之后在nginx.conf中加入:

geoip_country /usr/local/nginx/conf/GeoIP.dat;
geoip_city /usr/local/nginx/conf/GeoLiteCity.dat;
#geoIP的白名单
geo $remote_addr $ip_whitelist {
default 0;
include ip.conf;
}

在要使用geoIP的虚拟主机中的location中加入GeoIP配置,这里直接贴一个配置

location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#白名单配置
if ($ip_whitelist = 1) {
proxy_pass http://web;
break;
}
#屏蔽的国家返回403
if ($geoip_country_code ~ "(HK|TW|PH|MO|US)") {
return 403;
}
proxy_pass http://web;
}

在conf下新建一个ip.conf作为Geoip的白名单,支持ip段,内容和格式为:

8.8.8.8 1;
8.8.8.8/24 1;

检查配置

/usr/local/nginx/sbin/nginx -t

如果是64位系统可能会报:

/nginx: error while loading shared libraries: libGeoIP.so.1: cannot open shared object file: No such file or directory

解决方法:

ln -s /usr/local/lib/libGeoIP.so* /lib64/

之后

ldd /usr/local/nginx/sbin/nginx 

确认下没有not found的库文件即可。
这样就配置好了nginx,并且通过GeoIP限制了国家和城市的访问,并且支持白名单。

 

 

原文链接:http://www.52os.net/articles/configure-nginx-using-geoip-allow-whitelist.html

 

转载于:https://www.cnblogs.com/lsan/p/4629489.html

相关文章:

  • 2015Q1中国手机游戏市场监测报告
  • 烂泥:学习ubuntu之快速搭建LNMP环境
  • U盘安装Windows
  • C语言时间处理
  • PHP IDE 框架 服务器 相关
  • liux下ftp链接服务器的常用命令
  • 最近有个需求,就是把某个网址跳转到另外一个网址
  • socket server framework 框架
  • ASP.NET异步处理
  • 第六回 煤渣场对垒藏高人 小饭馆煮面论英雄[林大帅作品连载]
  • grunt安装
  • PCA的数学原理
  • Codeforces Round #302 (Div. 1)
  • Pencil OJ 01 开发的准备
  • 证明整数为平方数
  • 2017 年终总结 —— 在路上
  • classpath对获取配置文件的影响
  • IndexedDB
  • nodejs实现webservice问题总结
  • Python3爬取英雄联盟英雄皮肤大图
  • Python学习之路13-记分
  • Swoft 源码剖析 - 代码自动更新机制
  • TCP拥塞控制
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端性能优化——回流与重绘
  • 问题之ssh中Host key verification failed的解决
  • #define 用法
  • (06)金属布线——为半导体注入生命的连接
  • (27)4.8 习题课
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (JS基础)String 类型
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)基于IDEA的JAVA基础10
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net 8 发布了,试下微软最近强推的MAUI
  • .Net Web项目创建比较不错的参考文章
  • .net 获取url的方法
  • .Net6 Api Swagger配置
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .pyc文件是什么?
  • @Autowired注解的实现原理
  • @RequestBody的使用
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [04] Android逐帧动画(一)
  • [20190401]关于semtimedop函数调用.txt
  • [383] 赎金信 js
  • [BJDCTF 2020]easy_md5