最近接手一个项目只对境外用户显示不对境内显示,想到的方案也就两个,

1、在NGINX端进行限制,好处是效率高,缺点是灵活性差,只能对国家或者城市进行限制,不过足够满足要求

2、在程序端限制,因为用的是TP5所以最直接方式就是在访问入口处加路由规则,通过获取用户的IP转化为地区信息,然后对用户进行筛选。好处是灵活性强,缺点就是效率太差

最终衡量效率问题还是使用方案一

针对方案一又有两种做法

1、直接找到国家或城市的IP段,全部加入到限制规则deny中

分享一个较全的中国IP地址库,http://ipblock.chacuo.net/view/c_CN

2、使用GEOIP,直接判断国家或者城市编码,以此来限制区域的访问

最终确认了方案2,安装主要分三大步骤:

安装geoip的工具,使用centos的同学有福音啦


#Centos系统下可以直接用如下命令
[root@localhost src]# yum install geoip
#在debian中安装libgeoip:
[root@localhost src]#sudo apt-get install libgeoip-dev
#其它系统,你可以下载并编译一个源文件
[root@localhost src]#wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
[root@localhost src]#tar xzf GeoIP.tar.gz
[root@localhost src]#cd GeoIP
[root@localhost src]#./configure && make && make install

下载对应的国家IP地址信息和城市IP地址信息https://dev.maxmind.com/zh-hans/geoip/geoip2/geolite2-%E5%BC%80%E6%BA%90%E6%95%B0%E6%8D%AE%E5%BA%93/


国家IP地址
http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
城市IP地址
http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
下一步就是开始结合nginx配置使用验证


我在lnmp环境下安装要更新NGINX版本需要到 Lnmp目录下去配置

https://blog.csdn.net/u012600104/article/details/80887422


The server could...

这是一篇血的教训,花了我好几个不眠之夜悟出来的错误解决方案,原来遇到的问题就是每次要进行https更新都要遇到一个问题就是要把nginx停掉,但是就算停了...

阅读全文

nginx: [emerg] p...

nginx: [emerg] pcre_compile() failed: this version of PCRE is compiled withou...

阅读全文

Nginx配置网站适配PC和手机...

考虑到网站的在多种设备下的兼容性,有很多网站会有手机版和电脑版两个版本。访问同一个网站URL,当服务端识别出用户使用电脑访问,就打开电脑版的页面,用户如果...

阅读全文