代码如下:
当请求这些后缀和方法的时候会跳转到指定的链接。当然,也可以直接返回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;
}
正文结束