Nginx遭大量无文件奇怪请求淹没,如何拦截此类请求?
问题分析与解决方案
一、请求来源判断
这些请求属于恶意扫描类请求,是自动化爬虫/扫描工具发起的。这类工具会批量针对大量网站,拼接常见第三方Cookie许可弹窗组件(如Thor、Sibbo CMP)的标识字符串,探测目标网站是否部署了这类组件,以此收集信息或寻找潜在攻击入口。由于你的网站未部署相关组件,所以所有此类请求都会返回文件不存在的错误。
二、Nginx配置方案
1. 重定向到有效路径(推荐)
如果希望将这类请求导向]符号之前的有效slug页面,可以在Nginx的server块中添加以下规则:
# 截取']'之前的有效路径,执行301永久重定向 rewrite ^(.*?)\].*$ $1 permanent;
该规则会匹配所有包含]的请求URI,自动截取]及之后的无效内容,将用户重定向到]之前的有效路径,同时保留原页面的正常访问。
2. 直接拦截请求
若无需重定向,只想拦截这类请求避免日志被淹没,可在server块中添加以下配置:
# 拦截所有包含']'的请求,返回410 Gone(表示资源永久不存在) if ($request_uri ~* '\]') { return 410; }
如果需要更精准地匹配目标请求(仅拦截包含Cookie组件标识的请求),可以使用更具体的正则:
if ($request_uri ~* '\],(thor-cookies|sibbo-cmp-layout|div\.cookie-)') { return 410; }
配置完成后,执行nginx -t验证配置语法正确,再执行systemctl reload nginx使配置生效。
内容的提问来源于stack exchange,提问作者Dukanz
相关产品推荐
相关产品推荐

