Products
GG网络技术分享 2025-03-18 16:14 1
大家好,这里是关于[nginx根据指定User Agent来屏蔽访问或301跳转],[nginx中控制某些特定User-Agent的来源访问]问题的解答,希望对您有所帮助。如果你还想了解更多这方面的信息,请关注本站其他相关内容,共同学习吧!
教程大全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配置文件的最后一个括号前加入即可。
效果:
终于禁了这傻屌的访问。
今天早上刚到公司,就收到了报警群报警,显示服务器CPU超过70%,大早上的怎么可能有大批量的用户使用呢,一定是被人恶意请求了。
网站昨天就被刷了,量小在云平台的slb直接对IP进行封禁了。现在一定是更换了ip
今天早上的截图。
kibana显示的请求量
接着看大盘IP统计,显示117开头的IP,请求了5万多次。
kibana显示的IP统计次数
那就赶紧封禁掉此IP吧,果断到云平台的SLB控制台对其加入了黑名单。
发现此次被刷,采用了相同的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