代码如下:
当请求这些后缀和方法的时候会跳转到指定的链接。当然,也可以直接返回404或者444。
if ($request_uri ~* "(\.gz)|(\")|(\.tar)|(admin)|(\.zip)|(\.sql)|(\.asp)|(\.rar)|(function)|($_GET)|(eval)|(\?php)|(config)|(\')|(\.bak)") { return 301 http://lg-dene.fdcservers.net/10GBtest.zip; } #禁止下载以 XXX 后缀的文件 location ~ \.(zip|rar|sql|bak|gz|7z)$ { return 444; } #访问链接里含有 test 直接跳转到百度 if ($request_uri ~* test=) { return 301 https://www.baidu.com/; } if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { return 444; }
宝塔中直接把上面这段代码放在配置文件中就行,位置放在
access_log /dev/null; error_log /www/wwwlogs/mxooo.cn.error.log;
这两行的上面就行,位置千万别弄错了,不然保存可能无效。
当有人执行的时候会跳转下载一个10GB大小的垃圾文件,这么做有点对不起 lg-dene.fdcservers.net 这个网站的站长,虽说本来就是测试用的,良心过不去就改成 return 444; 即可。
具体的仔细研究一下,唯一难点就是这个规则的匹配。咱们日常使用宝塔就开启免费的防火墙插件即可,这个插件已经够用了。
===============
继续补充一个相对更完整点的规则。
#请求这些敏感词时跳转下载10g文件 if ($request_uri ~* "(\.gz)|(%27)|(\.tar)|(admin)|(\.zip)|(\.sql)|(\.asp)|(\.rar)|(function)|($_GET)|(eval)|(\?php)|(config)|(%22)|(\.bak)|(")|(\\')") { return 301 http://lg-dene.fdcservers.net/10GBtest.zip; } #禁止下载以 XXX 后缀的文件 location ~ \.(zip|rar|sql|bak|gz|7z)$ { return 444; } #访问链接里含有 test 直接跳转到公安网 if ($request_uri ~* test=) { return 301 https://www.mps.gov.cn; } #防止SB爬虫 if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { return 444; } #屏蔽非常见蜘蛛爬虫配置 if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { return 444; } #禁止某个目录执行脚本 #uploads|templets|data 这些目录禁止执行PHP location ~* ^/(uploads|templets|data)/.*.(php|php5)$ { return 444; }