本文先容如何利用GeoIP模块让nginx实现限制某个地域用户会见的成果。nginx要加上 --with-http_geoip_module 参数举办编译。
1、首先我们查抄一下nginx是否编译了GeoIP模块
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
nginx-V
假如你在输出界面看到了 --with-http_geoip_module,那么就说明nginx已经编译了GeoIP模块。
2、接下来我们安装GeoIP数据库在Debian/Ubuntu系统,我们可以执行下面的呼吁举办安装:
apt-getinstallgeoip-databaselibgeoip1
安装完成之后,GeoIP数据库会被安装在 /usr/share/GeoIP/GeoIP.dat。
这个GeoIP.dat是GeoIP数据库文件,利用apt-get呼吁安装的话这个文件不是最新的,我们可以从 http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 这里下载最新的GeoIP数据库文件。
mv/usr/share/GeoIP/GeoIP.dat/usr/share/GeoIP/GeoIP.dat_bak
cd/usr/share/GeoIP/wgethttp://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gzgunzipGeoIP.dat.gz
3、此刻来设置nginx.conf文件
vi/etc/nginx/nginx.conf
将下面的内容添加进 http {} 区域,而且要放在任何 include 语句之前。
geoip_country/usr/share/GeoIP/GeoIP.dat;map$geoip_country_code$allowed_country{defaultyes;FKno;FMno;EHno;}
上面这些语句是除了 FK,新加坡云主机香港云主机,FM,EH这三个地域的用户答允其它地域的用户会见。
也可以只答允部门地域用户会见:
geoip_country/usr/share/GeoIP/GeoIP.dat;map$geoip_country_code$allowed_country{defaultno;FKyes;FMyes;EHyes;}
上面这些语句是除了 FK,FM,EH这三个地域的用户其它地域的用户都不答允会见。
上面的语句只是配置了一个 $allowed_country 变量,要最终实现克制配置的地域用户会见,我们要对 $allowed_country 变量举办判定处理惩罚。在 server {} 区域里添加以下内容:
if($allowed_country=no){return403;}
也可以针对某个特定url举办限制:
location/special{if($allowd_country=no){return403;}}
4、重启nginx
/etc/init.d/nginxreload
这样我们就实现了nginx限制某个地域用户会见的成果。