其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

nginx中控制某些特定User-Agent的来源访问

GG网络技术分享 2025-03-18 16:14 1


大家好,这里是关于[nginx根据指定User Agent来屏蔽访问或301跳转],[nginx中控制某些特定User-Agent的来源访问]问题的解答,希望对您有所帮助。如果你还想了解更多这方面的信息,请关注本站其他相关内容,共同学习吧!

nginx根据指定User Agent来屏蔽访问或301跳转

教程大全301跳转,nginx,User-Agent,垃圾蜘蛛,蜘蛛

nginx根据指定User Agent来屏蔽访问或301跳转

今天早上看了自己一个网站监控,频繁的502.检查了下日志发现几乎全是一个SemrushBot/6~bl; +http://www.semrush.com/bot.html的垃圾蜘蛛访问的,百度搜索了下,这东西他不遵守robots规则的,本来想在robots文件里屏蔽下。

然后就打起了在nginx上屏蔽的主意。

下面说下如何屏蔽访问和跳转其他页面。

1.屏蔽UA:SemrushBot/6~bl; +http://www.semrush.com/bot.html的访问,并返回403代码

if ($http_user_agent ~* \"SemrushBot|semrush\") {

return 403;

}

其中的SemrushBot|semrush这两个都是上面我们要屏蔽UA的字符。写一个也是没问题的,比如写个SemrushBot。下面return 403是返回403代码,你也可以改成404。

2.根据UA来做301跳转

if ($http_user_agent ~* (SemrushBot|semrush)) {

rewrite ^/(.*)$ https://www.baidu.com permanent;

}

里面的https://www.baidu.com就是你要跳转到的地址。自己改即可。

放到宝塔的下面位置:

在nginx配置文件的最后一个括号前加入即可。

效果:

终于禁了这傻屌的访问。

nginx中控制某些特定User-Agent的来源访问

事情来由-某IP疯狂请求

今天早上刚到公司,就收到了报警群报警,显示服务器CPU超过70%,大早上的怎么可能有大批量的用户使用呢,一定是被人恶意请求了。

网站昨天就被刷了,量小在云平台的slb直接对IP进行封禁了。现在一定是更换了ip

今天早上的截图。

kibana显示的请求量


接着看大盘IP统计,显示117开头的IP,请求了5万多次。

kibana显示的IP统计次数


那就赶紧封禁掉此IP吧,果断到云平台的SLB控制台对其加入了黑名单。

Nginx判断其User-Agent,对其限制

发现此次被刷,采用了相同的User-Agent。

虽然和昨天的IP不一样,但ua是一致的,于是 我就想应该通过ua对其进行封禁。

网上找到了如下代码

#user_agent设置

if ($http_user_agent ~ 'curl|baidu|1111')

{

return 403;

}

因为域名较多,第一步考虑应该添加到http段落里面,但得到了如下错误

nginx: [emerg] "if" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:57

只好添加到Server段中

然后重启

用Postman测试,果然好使。


两个问题

1、域名较多,需要在每个域名配置文件中添加,不能添加到Http段落

2、虽然可以防止了这个User-Agent的恶意请求,但如果对方更换了User-Agent,还是没办法。

不知道大家是如何防止大量恶意请求的。

标签:

提交需求或反馈

Demand feedback