nginx 批量的禁止访问
方法一:
将下面的内容保存到nginx.conf同级目录,比如:deny1.conf
# 针对单个ip的形式
deny 171.94.171.205;
deny 115.29.166.101;
deny 182.247.251.48;
deny 61.147.89.17;
# 针对网段的形式
deny 66.249.227.0/24;然后在nginx.conf 的 http 段 引入这个文件,重启生效(注意这个是整体全部的网站配置的禁止这些IP访问了,谨慎使用):
include deny1.conf; 方法二:
有针对性的阻止,比如有些人工的发起请求,或许其他的你不想要的访问,通常是异常的客户端UA,可以这么做:
将下面的内容也保存到一个文件,也是nginx.conf同级目录,比如:deny2.conf
#禁止常用工具的抓取
if ($http_user_agent ~* "Scrapy|Curl|HttpClient|Java") {
return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~* "Baidu-YunGuanCe|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" ) {
return 403;
}
这里注意需要把里面的正则表达式修改成你需要的正则表达式,以免达不到你要的效果
然后在nginx.conf 的 server 段(也就是某个网站的配置而不是http段) 引入这个文件,重启生效:
http{
...
server {
...
include deny2.conf;
...
}
...
}先测试有没有配置错误
nginx -t再重启服务
nginx -s reload