用 Nginx 禁止国外 IP 访问我的网站...

news/2024/5/10 1:50:21/文章来源:https://blog.csdn.net/github_38592071/article/details/118077823

你已选中了添加链接的内容点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 
  • 原创 | Java 2020 超神之路,很肝~

  • 中文详细注释的开源项目

  • RPC 框架 Dubbo 源码解析

  • 网络应用框架 Netty 源码解析

  • 消息中间件 RocketMQ 源码解析

  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析

  • 作业调度中间件 Elastic-Job 源码解析

  • 分布式事务中间件 TCC-Transaction 源码解析

  • Eureka 和 Hystrix 源码解析

  • Java 并发源码

来源:toutiao.com/i6860736292339057156/

  • ①安装 geoip2 扩展依赖:

  • ②下载 ngx_http_geoip2_module 模块:

  • ③解压模块到指定路径

  • ④安装 nginx 模块

  • ⑤下载最新的 IP 地址数据库文件

  • ⑦模拟测试验证


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

图片来自 Pexels

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

①安装 geoip2 扩展依赖:

[root@fxkj ~]# yum install libmaxminddb-devel -y

②下载 ngx_http_geoip2_module 模块:

[root@fxkj tmp]#  git clone https://github.com/leev/ngx_http_geoip2_module.git[ro tmp]#

③解压模块到指定路径

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

[root@fxkj tmp]# mv ngx_http_geoip2_module/ /usr/local/[root@fxkj local]# ll ngx_http_geoip2_module/total 60-rw-r--r-- 1 root root  1199 Aug 13 17:20 config-rw-r--r-- 1 root root  1311 Aug 13 17:20 LICENSE-rw-r--r-- 1 root root 23525 Aug 13 17:20 ngx_http_geoip2_module.c-rw-r--r-- 1 root root 21029 Aug 13 17:20 ngx_stream_geoip2_module.c-rw-r--r-- 1 root root  3640 Aug 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 install libmaxminddb-devel -y

解压 nginx1.18 软件包,并升级为 nginx1.18,添加 ngx_http_geoip2 模块。

需要注意:

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

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

[root@fxkj tmp]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.16.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabledconfigure arguments: –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 版本,以及安装的模块:

[root@fxkj nginx-1.18.0]# /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.18.0built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)built with OpenSSL 1.0.2k-fips 26 Jan 2017TLS SNI support enabledconfigure arguments: –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

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

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

登录 www.maxmind.com 网址,创建账户,下载最新的库文件。(账户创建就不演示了)点击左侧,Download Files:

图片

选择 GeoLite2 Country,点击 Download GZIP 下载即可:

图片

上传到 /usr/share/GeoIP/ 下并解压:

[root@fxkj local]# cd /usr/share/GeoIP/[root@fxkj GeoIP]# lltotal 69612lrwxrwxrwx. 1 root root       17 Mar  7  2019 GeoIP.dat -> GeoIP-initial.dat-rw-r--r--. 1 root root  1242574 Oct 30  2018 GeoIP-initial.datlrwxrwxrwx. 1 root root       19 Mar  7  2019 GeoIPv6.dat -> GeoIPv6-initial.dat-rw-r--r--. 1 root root  2322773 Oct 30  2018 GeoIPv6-initial.dat-rw-r--r--  1 root root  3981623 Aug 12 02:37 GeoLite2-Country.mmdb

⑥配置 nginx 配置文件

修改前先备份配置文件:

[root@fxkj ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf-bak[root@fxkj ~]# vim /usr/local/nginx/conf/nginx.conf

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

geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {auto_reload 5m;$geoip2_data_country_code country iso_code;}map $geoip2_data_country_code $allowed_country {
default yes;CN no;}
图片

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

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

if ($allowed_country = yes) {# return https://www.baidu.com;# return /home/japan;return 404;}
图片

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

[root@fxkj ~]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[roo@fxkj ~]# /usr/local/nginx/sbin/nginx -s reload

⑦模拟测试验证

使用海外节点的服务器去访问网站,这里我的 IP 是来自于韩国:

图片

可以看到访问网站报错 404 Not Found:

图片

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

“13.125.1.194 – – [14/Aug/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, like Gecko) Chrome/84.0.4147.125 Safari/537.36”
图片

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

- END -

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732638.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么查询网站域名的备案信息?

注意,请先到阿里云官网 领取幸运券,除了价格上有很多优惠外,还可以参与抽奖。详见:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode2a7uv47d&utm_source2a7uv47d 备案查询演示: 1、…

网站常见问题1分钟定位 - Loading

不要慌,上面只是一张贴图。除了404,最让网友们心塞的可能就是这张贴图了。网站卡顿、页面加载慢是互联网应用常见的问题之一,这类问题的排查和解决并不容易,会花费运维人员大量的时间和精力。通常原因有以下三个: 应用…

phpmps改网站默认文本颜色方法

改这个分类系统网站默认颜色费了不少事 直接从dw中改 用页面属性第一次也许能改 但后来修改的时候怎么也修改不回来 今天费了好大的劲 找到默认颜色所在行 首先打开模板文件中的index.htm 用dw软件找到168行就是网站文本默认颜色了 从这改超链接鼠标移到上面还照样会变色 如果…

广告***盗杀毒厂商数字签名 视频网站流量惨遭劫持

金山毒霸安全实验室本周截获一广告***,该病毒运行后会在用户电脑释放被修改的flash插件。当用户访问优酷youku、toudu土豆、qiyi奇艺、56我 乐、QQ农场等视频网站时,病毒会强行插入视频广告。并且,据金山毒霸安全实验室分析,病毒释…

Angular JS + Express JS入门搭建网站

3月份开始,接到了新的任务,跟UI开发有关,用的是Angular JS,Express JS等技术。于是周末顺便学习下新技术。组里产品UI架构如下:其中前端,主要使用Angular JS框架,另外配合Bootstrap提供的很多控…

网站拓扑图(来自qq)

转载于:https://www.cnblogs.com/zhengah/p/4748439.html

烂泥:使用火狐解决网站图片不能复制下载的问题

本文首发于:烂泥行天下www.lanni654321.com由LureDresswww.luredress.com提供赞助 由于博客的需要,需要转载和下载一些网络上的图片,比如最近在阿里巴巴上看到的图片。想下载一些图片,但是阿里巴巴禁用鼠标的右键功能。网络上也有…

Asp.net网站如何播放Flv视频

再有网友问及此问题。Insus.NET重新写个简单的例子,此次把Flv Object 代码写入cs类别中。在应用时,只new它即可。 Flv objFlv new Flv();objFlv.Player();你在这里就可以看到它: View Code publicstringPlayer() { strin…

HTML5网站大观:分享8个精美的 HTML5 网站案例

本期的 HTML5 网站大观与大家分享 8 个精美的 HTML5 网站作品。HTML5 是现在Web开发领域的热点,越来越多的开发人员开始使用 HTML5 来开发交互性强、效果出众的Web应用和游戏。希望这些 HTML5 网站案例能帮助大家更好的学习 HTML5 网站制作。 Worry Free Labs Fore …

Google SEO信息年终总结

2011年马上就要结束了,这里总结一下Google关于SEO方面的资讯。谷歌每年对其搜索算法作出超过500次的修改,由于大多数修改只会影响 极少部分的搜索结果,所以很少有人察觉。这里也是从一些较为靠谱的新闻资讯来揣摩Google算法的修改方向&#x…

【观点】如何打造网站高性能的核心优势

【CSDN编译】导读:本文根据Jeff Atwood的博文《Performance is a Feature》整理编译而来。作者就如何创建高性能网站分享了一些经验。现整理出来与大家分享。以下是博客内容:很多数据表明,网页打开和下载的速度越慢,用户越不愿使用…

使用jQuery和CSS3创建一个支持翻转效果的微/轻博客网站列表

在线演示 本地下载 今天我们将使用页面元素的翻转效果设计一个微博和轻博网站列表&#xff0c;将使用jQuery的jQuery Flip插件来实现特效。 HTML代码 这里我们使用socialwrapper来包装每一个需要展示的网站&#xff0c;如下&#xff1a; <div class"socialwrapper&qu…

Asp.Net 网站优化 数据库优化措施 使用主从库(上)

网站规模到了一定程度之后&#xff0c;该分的也分了&#xff0c;该优化的也做了优化&#xff0c;但是还是不能满足业务上对性能的要求&#xff1b;这时候我们可以考虑使用主从库。 主从库是两台服务器上的两个数据库&#xff0c;主库以最快的速度做增删改操作最新数据的查询操作…

2012 年大事件 百度调整收录算法 低质量网站遭清理

2019独角兽企业重金招聘Python工程师标准>>> 以这两个网站为例 看看百度的收录 购物导航 http://www.ganshuw.com 购物分享 http://www.jielala.com/ 今日百度对收录算法再次做出调整&#xff0c;有大批量的网站收到了本次算法调整的影响&#xff0c;据速途网了解&…

网站运营:用互动提高各级用户转化率

1、网站用户分级&#xff0c;可以清晰地看到漏斗效应2、提升用户漏斗层级之间转化率的核心要素是什么呢&#xff1f;3、常规的解决方案是怎样的&#xff1f;4、如何用互动方式来思考功能&#xff1f;总结&#xff1a;完整的表述

Windows Server 2008 IIS7.0 发布html和Asp.net网站

第一步&#xff1a;安装并配置IIS 7.0 先要设置应用程序池(ApplicationPool)为Classic.NETAppPool&#xff0c;而不是默认的DefaultAppPool。可以设置.net FrameWork版本 第二歩&#xff1a;为默认网站Default Web Site配置绑定&#xff0c;可以修改端口号&#xff0c;我修改为…

使用jQuery开发超酷带有背景波浪动画的单页面网站导航菜单

日期&#xff1a;2012-9-11 来源&#xff1a;GBin1.com 在线演示 本地下载 在今天的教程中&#xff0c;我们将使用jQuery开发一个单页面的网站&#xff0c;并且添加超酷的波浪动画背景效果到导航菜单上&#xff0c;希望大家能够喜欢&#xff01; 主要开发使用插件&#xff1…

2012/9/13一些网站,资源收集

2019独角兽企业重金招聘Python工程师标准>>> VIM相关VIMER的程序世界 易水博客手把手教你把vim改装成一个IDE编程环境&#xff08;吴垠&#xff09;Coming Home to VIMgvim下安装taglist&#xff08;windows&#xff09;gvim下安装taglist&#xff08;Linux&#xf…

使用leancloud托管静态网站

leancloud是什么&#xff1f; leancloud官网大部分的产品都是数据驱动的&#xff0c;它们有一个最大的特点&#xff0c;就是对后端的需求在模式上其实是比较统一的&#xff1a;1.前端负责数据展现和用户交互处理&#xff0c;与后端的 app server 通过网络来交换需要的数据2.app…

一个80后SEOER对于SEO职业规划的三点想法

SEO不是一切&#xff0c;SEO不是万能的&#xff0c;每一个步入SEO行业的人都有一个梦想&#xff0c;都是依靠SEO技术去赚钱。我大学学的是电子商务专业&#xff0c;2010年8月广西做了一年志愿者&#xff0c;家里人想安排我去政府机关锻炼&#xff0c;然后考公务员&#xff0c;后…