方法一:
将下面的内容保存到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 

标签: nginx

添加新评论