龙空技术网

nginx中控制某些特定User-Agent的来源访问

程序员涛哥 250

前言:

而今你们对“nginx添加黑名单”大约比较注重,咱们都需要学习一些“nginx添加黑名单”的相关资讯。那么小编在网上网罗了一些对于“nginx添加黑名单””的相关内容,希望姐妹们能喜欢,各位老铁们快快来了解一下吧!

事情来由-某IP疯狂请求

今天早上刚到公司,就收到了报警群报警,显示服务器CPU超过70%,大早上的怎么可能有大批量的用户使用呢,一定是被人恶意请求了。

网站昨天就被刷了,量小在云平台的slb直接对IP进行封禁了。现在一定是更换了ip

今天早上的截图。

kibana显示的请求量

接着看大盘IP统计,显示117开头的IP,请求了5万多次。

kibana显示的IP统计次数

那就赶紧封禁掉此IP吧,果断到云平台的SLB控制台对其加入了黑名单。

Nginx判断其User-Agent,对其限制

发现此次被刷,采用了相同的User-Agent。

虽然和昨天的IP不一样,但ua是一致的,于是 我就想应该通过ua对其进行封禁。

网上找到了如下代码

 #user_agent设置    if ($http_user_agent ~ 'curl|baidu|1111')    {       return 403;    }

因为域名较多,第一步考虑应该添加到http段落里面,但得到了如下错误

nginx: [emerg] "if" directive is not allowed here in /usr/local/nginx/conf/nginx.conf:57

只好添加到Server段中

然后重启

用Postman测试,果然好使。

两个问题

1、域名较多,需要在每个域名配置文件中添加,不能添加到Http段落

2、虽然可以防止了这个User-Agent的恶意请求,但如果对方更换了User-Agent,还是没办法。

不知道大家是如何防止大量恶意请求的。

标签: #nginx添加黑名单