NGINX阻止指定ip的请求问题及解决方案
作者:疯癫的老码农
web页面做了一个功能,在websocket请求失败的情况,会定时向服务端进行重试进行建立连接,这篇文章给大家介绍NGINX阻止指定ip的请求问题及解决方案,感兴趣的朋友一起看看吧
业务场景:
web页面做了一个功能,在websocket请求失败的情况,会定时向服务端进行重试进行建立连接。
存在的问题是即使这个web系统没人操作的情况下,只要页面没有关闭,即使系统超时了页面也没有发生跳转,这就有点像对服务器进行攻击一样。
问题分析:
经过分析,从上述描述的情况来看,有如下问题:
1、系统超时的时候,页面应该要一个跳转,例如跳转到登陆页面。如果这一步做了,也会减少websocket不断的向服务器发送请求,超时的情况下发送的websocket都是无效请求
2、在某种情况,websocket请求失败,想要重试再次建立连接,从想法上是没有问题的,但是问题的关键就在于没有阀值的控制,例如可以重试5次,如果发现还是连接不上,那么就终止重试请求
解决方案:
1、系统超时的时候,页面跳转到登陆页面就可以了。前端可以根据检测操作事件,根据时间来控制,如果超时了,那么就自动跳转。
2、重试次数控制,增加业务逻辑就可以了,也没有特别的。
3、因为这种不断的请求就会导致服务端很痛苦,尤其是那种系统超时过来的无效的请求。如果想要临时阻止这种情况,NGINX上是可以配置的。
1)、识别请求IP
可以到NGINX的日志文件中取查看,logs/access.log, 下面是摘出来一条日志:
192.0.79.100 - - [31/Jan/2024:11:39:34 +0800] "GET /prod-api/getRouters HTTP/1.0" 200 7495 "域名XXXX" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" "192.0.79.10"
我从上面可以看出,请求来源于192.0.79.100
2)、配置想要阻止的请求地址
location / { deny 192.0.79.100; }
3)、重启NGINX
./nginx -s reload
4)、测试请求
当192.0.79.100机器再次往这个NGINX发起请求的时候,发现页面报错了,那么就代表以及成功阻拦了请求
到此这篇关于NGINX如何阻止指定ip的请求的文章就介绍到这了,更多相关nginx 阻止指定ip的请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!