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配置文件的最后一个括号前加入即可。
效果:
终于禁了这傻屌的访问。