专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

如何使用GeoIP来屏蔽Nginx国外访问

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:14:45       共计:3596 浏览

这个功能是基于with-http_geoip_module模块实现的,可以设置需要屏蔽的区域访问


测试环境:centos 7.6


工具: xshell


一、首先需要先下载nginx源码包,下载nginx、解压,配置与编译,安装


wget http://nginx.org/download/nginx-1.16.1.tar.gz


解压与配置安装


#下载编译依赖

yum -y install gcc pcre-devel openssl-devel zlib-devel

#添加用户和用户组 设置程序启动的用户

groupadd www

useradd -M -g www -s /usr/sbin/nologin www

#解压源码包

tar -zxvf nginx-1.16.1.tar.gz

#编译安装过程

cd nginx-1.16.1

./configure --user=www --group=www  

--prefix=/usr/local/nginx

--with-http_stub_status_module

--with-http_ssl_module

--with-http_geoip_module

#编译 && 安装

make && make install

/usr/local/nginx/sbin/nginx #启动

/usr/local/nginx/sbin/nginx -s stop #关闭


以上只是编译与安装nginx,如果没有nginx的,或者嫌麻烦的,也可以使用,我这边写的一键安装脚本,nginx是1.16.1,php是7.3的,mysql是5.6的,仅限centos7使用


教程与脚本:https://github.com/darren2025/LNMP-


二、怎么配置模块


1.首先,先下载IP库


wget http://www.321dz.com/shell/GeoIPv6.dat


2.我这里将这个文件复制道nginx配置文件下,如果你们地址不一样就换一下,如果不换也可以(随意这步)


cp -r GeoIPv6.dat /usr/local/nginx/conf




3.编辑nginx配置文件,我的配置文件在 /usr/local/nginx/conf/nginx.conf


vim /usr/local/nginx/conf/nginx.conf


将下面的内容添加进 http {} 区域,并且要放在任何include语句之前:


  geoip_country /usr/local/nginx/conf/GeoIPv6.dat;  #放刚才那个下载的文件地址


  map $geoip_country_code $allowed_country {


  default no;  #默认都拒绝


     CN yes;  #允许中国


     TW yes; #允许台湾,台湾也是中国的


     HK yes;  #中国香港


     MO yes;  #中国澳门


  }




以上是定义规则,现在要使用规则,接下来在server {} ,一个server代表一个虚拟主机区域里添加以下内容:


#判断是不是在拦截范围,是直接403,不让访问了

        if ($allowed_country = no) {

               return 403;

        }


 


效果图:一个是用美国服务器访问的,一个是用我本地浏览器访问的



当然也可以对某些目录限制


location /admin {


  if ($allowd_country = no) {


 return 403;


  }

}


 


这个是不允许特定区域访问这个admin目录,这个就要看怎么应用了.


4.最后完成后,记得重载nginx配置


/usr/local/nginx/sbin/nginx -s reload  #重载配置文件  使配置生效(当更改了配置文件的时候需要使用)

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:nodejs如何在windows下安装npm教程 | ·下一条:配置GeoIP模块来拦截Nginx服务器中指定国家IP

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有