网易首页 > 网易号 > 正文 申请入驻

通过Nginx实现禁止国外IP访问网站

0
分享至

前言:先来说说为啥要写这篇文章,然后小编看了下nginx的访问日志,发现每天有好多国外的IP地址来访问我的网站,并且访问的内容基本上都是恶意的。因此我决定禁止国外IP来访问我的网站

想要实现这个功能有很多方法,下面我就来介绍基于NGINX的ngx_http_geoip2模块来禁止国外IP访问网站

一,安装geoip2扩展依赖

[root @fxkj〜 ] #yum安装libmaxminddb-devel -y

二,下载ngx_http_geoip2_module模块

[根@fxkj TMP]#GIT中克隆的https://github.com/leev/ngx_http_geoip2_module.git
[RO TMP]#

三,解压模块到指定路径

我这里解压到/ usr / local目录下

[根@fxkj TMP]#MV ngx_http_geoip2_module / / USR /本地/
[根@fxkj 本地]#LL ngx_http_geoip2_module /
总 60
-rw-R - R-- 1 根根 1199 年08月 13 17:20 配置
-rw-R --r-- 1 根根 1311 八月 13 17:20 LICENSE
-rw-R - R-- 1 根根 23525 月 13 17:20 ngx_http_geoip2_module.c
-rw-R - R-- 1 根根 21029 八月 13 17:20 ngx_stream_geoip2_module.c
-rw-R - R-- 1 根根 3640 年08月 13 17:20 README.md

四,安装nginx模块

首先说明下环境,我的nginx版本是1.16,在网上查了下安装ngx_http_geoip2模块至少需要1.18版本及以上,因此此次安装我是升级nginx1.18,添加ngx_http_geoip2模块。

  • 下载nginx 1.18版本
[root @fxkj〜 ] #yum安装libmaxminddb-devel -y

  • 解压nginx1.18扩展并升级为nginx1.18,添加ngx_http_geoip2模块

需要注意:

1,升级nginx,添加nginx模块只需要编译然后make不需要make instll不然线上的nginx会被新版本nginx完完整整的的替换掉

2,编译前需要看下nginx当前安装了哪些模块

[根@fxkj TMP]#的/ usr /本地/ nginx的/ sbin目录/ nginx的-V
nginx的版本:nginx的/ 1.16.0
通过gcc构建 4.8.5 20150623 (红帽 4.8.5 - 39)(GCC)
与OpenSSL的内置 1.0 .2 k 跳2017年 1 月26日
启用TLS SNI支持的
配置参数:–with-http_stub_status_module –prefix = / usr / local / nginx –user = nginx –group = nginx –with-http_ssl_module –with-stream

编译安装

[root @fxkj tmp] #tar -xf nginx- 1.18.0 .tar.gz
[root @fxkj tmp]#cd nginx- 1.18.0 /
[root @fxkj nginx- 1.18.0 ]#./configure --with -http_stub_status_module \
--prefix = / usr / local / nginx \
--user = nginx --group = nginx --with-http_ssl_module --with-stream \
--add- module = / usr / local / ngx_http_geoip2_module
[root @ fxkj nginx- 1.18.0 ] #make
[root @fxkj nginx- 1.18.0 ] #cp / usr / loca / nginx / sbin / nginx / usr / loca / nginx / sbin / nginx1 .16 #备份
[root@fxkj nginx- 1.18.0 ] #cp objs / nginx / usr / local / nginx / sbin /#用新的去覆盖旧的
[root @fxkj nginx- 1.18.0 ]#pkill nginx#杀死nginx
[root @ fxkj nginx- 1.18.0 ]#/ usr / local / nginx / sbin / nginx#再次启动Nginx

查看nginx版本以及安装的模块

[根@fxkj nginx- 1.18.0 ]#的/ usr /本地/ nginx的/ sbin目录/ nginx的-V
nginx的版本:nginx的/ 1.18.0
通过gcc构建 4.8.5 20150623 (红帽 4.8.5 - 39)(GCC)
使用OpenSSL 1.0.2 k-fips 构建的 协议2017年 1 月26日
启用TLS SNI支持的
配置参数:–with-http_stub_status_module –prefix = / usr / local / nginx –user = nginx –group = nginx –with-http_ssl_module –with-stream –add -模块= / usr / local / ngx_http_geoip2_module

五,下载最新的IP地址数据库文件

模块安装成功后,还要在Nginx里指定数据库,在安装运行时库中安装了两个,位于/ usr / share / GeoIP /目录下,一个只有IPv4,一个包含IPv4和IPv6:

登录www.maxmind.com网址,创建帐户下载最新的库文件(帐户创建就不演示了)

发布到/ usr / share / GeoIP /下并解压

[root @fxkj local]#cd / usr / share / GeoIP /
[root @fxkj GeoIP] #ll
共计 69612 lrwxrwxrwx
。 1 个根 17 Mar的 7 2019年 GeoIP.dat - >的GeoIP-initial.dat
-rw-R - R--。 1 根root 1242574 2018年 10月 30 日 GeoIP-initial.dat lrwxrwxrwx
。 1 root root 19 Mar 7 2019 GeoIPv6.dat-> GeoIPv6-initial.dat
-rw-r--r--。 1 root root 2322773 2018年 10月 30 日 GeoIPv6-initial.dat
-rw-R - R-- 1 根根 3981623 年08月 12 版本02:37 GeoLite2-Country.mmdb

六,配置nginx配置文件

修改前先备份配置文件

[根@ fxkj〜]# CP 的/ usr /本地/ nginx的/ CONF / nginx的。conf / usr / local / nginx / conf / nginx。CONF -bak
[根@ fxkj〜]# VIM 的/ usr /本地/ nginx的/ CONF / nginx的。conf

在http中添加几行,定义数据库文件位置

geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
auto_reload 5 m;
$ geoip2_data_country_code国家iso_code;
地图$ geoip2_data_country_code $ allowed_country {
默认为 是;
CN号;

在服务器中的位置下添加条件

如果满足IP是国外IP就执行下面的return动作,我这里定义了3种,注释了其中两个。

当访问IP是国外IP,直接返回404

如果 ($ allowed_country = yes){
# 返回 https://www.baidu.com ;
# 返回 /主页/日本;
返回 404 ;
}

修改完毕后,检测下配置文件,重新加载下nginx

[root @fxkj〜 ]#/ usr / local / nginx / sbin / nginx -t
nginx:配置文件/usr/local/nginx/conf/nginx.conf的语法是可以的
nginx:配置文件/ usr / local / nginx / conf / nginx.conf测试成功
[roo @fxkj〜 ]#/ usr / local / nginx / sbin / nginx -s重新加载

7,模拟测试验证

使用海外上游的服务器去访问网站

这里我的IP是来自于韩国

可以看到访问网站报错404未找到

我们再来看下nginx的访问日志

“ 13.125.1.194 - - [ 14 /8/ 2020:16:15:51 + 0800 ]‘GET /favicon.ico HTTP / 1.1 ’ 404 548 ‘HTTPS://www.fxkjnj.com/’“的Mozilla / 5.0( Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 84.0.4147.125 Safari / 537.36”

至此,我们通过Nginx来实现禁止国外IP访问网站就结束了〜

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
北京今天大部地区有阵雨,阵风五六级,最高气温21℃

北京今天大部地区有阵雨,阵风五六级,最高气温21℃

北青网-北京青年报
2026-03-28 07:43:03
杨亚洲新剧《春寒》官宣:原班人马回归引热议

杨亚洲新剧《春寒》官宣:原班人马回归引热议

叮当当科技
2026-03-28 07:35:07
张雪峰好兄弟曝内情泣不成声,人民日报悼念官媒定义,卫健委追责

张雪峰好兄弟曝内情泣不成声,人民日报悼念官媒定义,卫健委追责

潮鹿逐梦
2026-03-26 10:55:41
无奈!演员李嘉明搬离别墅,携娇妻返回山西,直播三年全交了房租

无奈!演员李嘉明搬离别墅,携娇妻返回山西,直播三年全交了房租

裕丰娱间说
2026-03-28 15:44:47
这正史野的都要飞起来了

这正史野的都要飞起来了

我是历史其实挺有趣
2026-03-21 09:25:19
黄多多身着“比基尼出道”,内娱炸了。

黄多多身着“比基尼出道”,内娱炸了。

黎兜兜
2026-03-27 21:34:24
95后“掏粪男孩”结婚 9辆吸粪车组车队迎亲 新娘:这是我们专属的浪漫

95后“掏粪男孩”结婚 9辆吸粪车组车队迎亲 新娘:这是我们专属的浪漫

红星新闻
2026-03-28 13:41:14
“沉睡”的10万亿元公积金

“沉睡”的10万亿元公积金

吴晓波频道
2026-03-28 08:33:28
一人睡遍整个娱乐圈?司晓迪打响了2026年第一炮

一人睡遍整个娱乐圈?司晓迪打响了2026年第一炮

阅毒君
2026-01-05 07:05:06
地面战打响!以色列,惨败破防了!

地面战打响!以色列,惨败破防了!

大嘴说天下
2026-03-27 19:40:27
深夜突发,南海海域!解放军532舰遭到菲律宾舰艇危险接近

深夜突发,南海海域!解放军532舰遭到菲律宾舰艇危险接近

安安说
2026-03-28 11:49:12
京圈“顶级富二代”落马:该对有钱人祛魅了……

京圈“顶级富二代”落马:该对有钱人祛魅了……

不二表姐
2026-03-26 23:45:09
伊朗宣布:关闭霍尔木兹海峡,通过者将遭严厉打击!特朗普:伊朗想让我当最高领袖,但我拒绝了

伊朗宣布:关闭霍尔木兹海峡,通过者将遭严厉打击!特朗普:伊朗想让我当最高领袖,但我拒绝了

每日经济新闻
2026-03-27 20:24:31
遥遥无期,太阳队狄龙和马克·威廉姆斯伤愈复出时间不确定

遥遥无期,太阳队狄龙和马克·威廉姆斯伤愈复出时间不确定

好火子
2026-03-28 05:24:22
一个月允许吃几次他达拉非?这样服用,高效摆脱ED困扰

一个月允许吃几次他达拉非?这样服用,高效摆脱ED困扰

哆啦程医生
2026-03-27 18:20:23
禁赛5年,全国封杀!足协开出重磅罚单,曾飞踹裁判,试训津门虎

禁赛5年,全国封杀!足协开出重磅罚单,曾飞踹裁判,试训津门虎

篮球看比赛
2026-03-28 12:24:26
央视直播:中国U19战澳大利亚U19,07国青队冲击世青赛

央视直播:中国U19战澳大利亚U19,07国青队冲击世青赛

民哥台球解说
2026-03-27 20:06:08
泪奔!今日送别张雪峰:说好的丧事从简,现场有数万民众自发到场

泪奔!今日送别张雪峰:说好的丧事从简,现场有数万民众自发到场

魔都姐姐杂谈
2026-03-28 09:33:09
价疯传!很多人开始囤,有人已经订到12月,“能买的都买了”

价疯传!很多人开始囤,有人已经订到12月,“能买的都买了”

山东教育电视台
2026-03-28 10:37:45
陈羽凡现状:低调生活,50岁胖到认不出,17岁儿子1米8长得像妈

陈羽凡现状:低调生活,50岁胖到认不出,17岁儿子1米8长得像妈

三公子娱乐丫
2025-05-17 17:59:45
2026-03-28 16:19:00
互联网干货博主
互联网干货博主
我是专注分享互联网干货的博主
278文章数 1340关注度
往期回顾 全部

科技要闻

遭中国学界"拉黑"后,这家AI顶会低头道歉

头条要闻

特朗普:北约没支持美打击伊朗 美国以后也不会帮北约

头条要闻

特朗普:北约没支持美打击伊朗 美国以后也不会帮北约

体育要闻

“我是全家最差劲的运动员”

娱乐要闻

王一博改名上热搜!个人时代正式开启!

财经要闻

我在小吃培训机构学习“科技与狠活”

汽车要闻

置换补贴价4.28万起 第五代宏光MINIEV正式上市

态度原创

游戏
健康
家居
公开课
军事航空

任天堂多款大作泄露!除塞尔达和3D马里奥外还有惊喜

干细胞抗衰4大误区,90%的人都中招

家居要闻

曲线华尔兹 现代简约

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

美军中东基地损失最新披露

无障碍浏览 进入关怀版