Nginx 444 状态码,应对网站流量攻击的恶意请求

更新日期: 2025-08-15 阅读次数: 46 字数: 409 分类: Nginx

今天,网站受到的流量攻击还在持续。依旧是海量的广东 IP 请求,没有任何规律。参考前文:

网站七牛 CDN 流量被刷,差点破产

尝试了 Nginx 返回两种状态码,但是都没有效果,攻击请求依旧:

  • 403 Forbidden: 明确表示请求权限被拒绝
  • 502:暗示我的服务已经挂了,大爷饶命

无奈╮(╯▽╰)╭,都没有用。这个刷流量的攻击方,既不是来爬内容的,也不是想把你网站拖垮,就是纯粹地刷流量。根本不在乎你返回啥。某书上有个大佬分析是部分 CDN 提供商实际是黑产,需要伪造流量,所以狂刷数据。下图是七牛云 CDN 的请求数统计,目前只能止住 CDN 的消耗,但是服务器源站的请求还在继续:

七牛云 CDN 请求数统计

所以,干脆 Nginx 啥也不返回行不行。感觉返回 502 错误页的流量都是浪费带宽,毕竟国内服务器带宽贵如金。

Nginx 444 状态码

444 状态码是 nginx 自己定义的,不在标准HTTP状态码范围内。它的核心含义是:

Nginx 服务器主动关闭连接,不向客户端发送任何响应。

相比返回一个完整的错误页面(如 403 或 404, 502),直接关闭连接消耗的服务器资源(CPU、内存、带宽)更少,尤其是在面对大量无效或恶意请求时。甚好,非常符合我的需求。

Nginx 配置示例

# 在 server 或 http 块中
if ($http_user_agent ~* (BadBot|Scanner|Spammer)) {
    return 444;
}

reload Nginx 配置

确认配置文件格式正确,并 reload Nginx 配置,使 444 状态码的配置生效。

sudo nginx -t
sudo nginx -s reload

😮‍💨,感觉搞服务器有时候不能有精神洁癖,被攻击就被攻击吧,只要服务器负载没有问题,你刷你的。 我也不纠结了。后面了解一下网友推荐的雷池 WAF,或者阿里云 ESA。由于服务器和域名都在阿里云,不想尝试腾讯的 EdgeOne 了。

关于作者 🌱

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式