nginx http 444 状态码简单说明

最近在解决一个问题的时候,发现一个产品使用了一个nginx 的非标准http 状态码,444,刚开始没注意,后边发现此状态码还是比较有意思的

业务现象

有几个域名都是解析到同一个服务器,同时访问都是同一个nginx,但是一个就比较正常,另外一个直接看不到http 状态信息(通过浏览器),刚开始以为是解析配置的有问题,通过链路的分析发现应该是同一个nginx,那就比较怪了,正常情况下应用是至少能看到nginx 返回的一些信息的,然后就顺着产品使用nginx 查看配置,之后发现了一个比较有意思的http 444 状态码的使用

  • 一段参考配置
location / {
        if ($bad_bot) {
            return 444;
        }
        # normal processing…
    }

在参考相关资料之后,发现通过浏览器打开的效果与实际配置的nginx 444 是对应上了

nginx http 444 的处理

当遇到return 444,内部会进行日志记录,然后直接关闭连接,不会发送http 状态行,头以及body,客户端的现象是Empty reply from server

nginx http 444 的一些使用场景

  • 拦截无效或者恶意请求
  • 防爬虫

说明

使用好nginx 的http 444 还是比较有用的,可以减少一些攻击的持续探测,同时还能减少带宽,但是对于日常拍错也是会有一些影响的,所以注意查看配置

参考资料

https://nginx.org/en/docs/http/ngx_http_core_module.html

posted on 2025-06-20 08:00  荣锋亮  阅读(561)  评论(0)    收藏  举报

导航