当前位置: 代码网 > 服务器>服务器>Nginx > NGINX阻止指定ip的请求问题及解决方案

NGINX阻止指定ip的请求问题及解决方案

2024年05月18日 Nginx 我要评论
业务场景:web页面做了一个功能,在websocket请求失败的情况,会定时向服务端进行重试进行建立连接。存在的问题是即使这个web系统没人操作的情况下,只要页面没有关闭,即使系统超时了页面也没有发生

业务场景:

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的请求内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com