维基百科的定义
499 Client Closed Request (Nginx) Used in Nginx logs to indicate when the connection has been closed by client while the server is still processing itsrequest, making server unable to send a status code back
499状态码是nginx自定义的状态码,不是标准的状态码,在官网的定义是Client Closed Request
,也即客户端关闭了请求连接,原因大部分是因为接口响应太久了,客户端设置了超时时间,直接关闭了请求连接。原因可能是网络网速问题,也有可能是后端接口响应太慢了
如果系统需要记录后端响应日志,可以设置proxy_ignore_client_abort
参数设置为on
,开启后,后端接口超过了客户端的响应时间,后端接口会继续执行,日志也会记录到nginx里,不过这种做法会在一定程度上造成nginx的资源使用,需要根据实践情况使用,如果为了系统安全,建议还是不开启
location =/api {
proxy_ignore_client_abort on;
proxy_pass http://web.server.com;
}
proxy_ignore_client_abort参数设置为on后,如果客户端断开连接,nginx也不会断开与后端服务端的连接,会等待后端服务器接口的返回,然后记录到日志,如果是返回5xx,就记录5xx状态码日志,返回200成功,就记录200状态码的日志,如果超过了响应时间,默认60s,可以用 proxy_read_timeout 设置,就记录504状态码的日志