博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx使用GeoIP限制访问并支持白名单
阅读量:5744 次
发布时间:2019-06-18

本文共 2266 字,大约阅读时间需要 7 分钟。

 

要使用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.gzwget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gzwget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gzwget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gzwget 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.33make && 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 ;
break;
}
#屏蔽的国家返回403
if ($geoip_country_code ~ "(HK|TW|PH|MO|US)") {
return 403;
}
proxy_pass ;
}

在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

你可能感兴趣的文章
《树莓派渗透测试实战》——1.1 购买树莓派
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
深入理解自定义Annotation,实现ButterKnif小原理
查看>>
排序高级之交换排序_冒泡排序
查看>>
Cocos2d-x3.2 Ease加速度
查看>>
[EntLib]关于SR.Strings的使用办法[加了下载地址]
查看>>
中小型网站架构分析及优化
查看>>
写shell的事情
查看>>
负载均衡之Haproxy配置详解(及httpd配置)
查看>>
linux虚拟机拷贝之后联网出错
查看>>
Linux文件系统探索
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
查找恶意的TOR中继节点
查看>>