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 还是比较有用的,可以减少一些攻击的持续探测,同时还能减少带宽,但是对于日常拍错也是会有一些影响的,所以注意查看配置