Nginx 499 status code

这几天在排查线上一个CC攻击问题时,发现nginx打印输出的访问请求日志中,状态码都是499,并且请求总时间基本在都在1ms内,响应字节数也是0。

499错误是什么?让我们看看NGINX的源码中的定义:

ngx_string(ngx_http_error_495_page), /* 495, https certificate error */

ngx_string(ngx_http_error_496_page), /* 496, https no certificate */

ngx_string(ngx_http_error_497_page), /* 497, http to https */

ngx_string(ngx_http_error_404_page), /* 498, canceled */

ngx_null_string,                    /* 499, client has closed connection */

从注释说明来看,499的产生是由于请求过程中,源站先关闭,然后产生了499,于是自己写代码仰正一番。

直接上python脚本:


第一次,请求一个本地文件,但是nginx 响应太快,没等完全关闭,响应已经回来。nginx状态码是200。

第二次,由于我用的是openresty框架,在请求的access_by_lua阶段,调用了ngx.sleep(10),sleep10秒,再次大量发送请求,这时候出现了预期中的499。

另外,如果Nginx作为反向代理,如果在代理节点向后段业务获取服务的过程中,不受到client端的主动断开影响,nginx提供了一个指令:

proxy_ignore_client_abort on;

打开就好! 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容