NGINX加载GEOIP实现IP拦截功能

2021/10/26 21:03:28      点击:

如果你采用yum install nginx安装的NGINX,默认是没有GEOIP的。如果重新编译,又怕出问题,不过新版的NGINX都支持动态加载模块了,不需要对于主程序重新进行编译,下面就是加载GEOIP的方法。

wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -Uvh nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx-module-geoip
打开/etc/nginx/nginx.conf,在events {的前面,添加下面的内容:

load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;
或者使用完整路径也可以

load_module /usr/lib64/nginx/modules/ngx_http_geoip_module.so;
load_module /usr/lib64/nginx/modules/ngx_stream_geoip_module.so;
第二步就是在http和stream中,添加GEOIP文件的路径,以便查询IP

stream {
    geoip_country  /etc/nginx/GeoIP.dat;
    ......
}
http {
    geoip_country  /etc/nginx/GeoIP.dat;
    ......
}
第三步就是在网站配置文件server部分,添加你想要的功能,比如下的,禁止日本的IP地址访问网站

server {
......
    if ($geoip_country_code = "JP") {
       return 403;
    }
......
}

这样就完美实现了屏蔽国家IP了,当然,你也可以把GEOIPCITY的IP库加载进去,然后拦截指定城市的IP地址。