一名热爱体感技术的
业余专业开发人员

【转】nginx出现499错误码的原因以及proxy_ignore_client_abort配置

https://yq.aliyun.com/articles/560413

最近发现服务器上出现很多499的错误,出现499错误的原因是客户端关闭了连接,在我这篇文章:服务端在执行时中途关闭浏览器退出之后php还会继续执行吗?个人实践实验得到结果(http://www.04007.cn/article/356.html )里,测试中断时,服务器nginx的日志就是499记录。nginx报49*错误

400-499 用于指出客户端的错误。 (自己电脑这边的问题) 自己电脑这边的问题)

495 :https certificate error
496 :https no certificate
497 :http to https
498 :canceled
499 :client has closed connection
即499错误是客户端主动断开了连接。 如何关闭报499这个错误码呢?可以通过配置:proxy_ignore_client_abort来处理。
proxy_ignore_client_abort:是否开启proxy忽略客户端中断。即如果此项设置为on开启,则服务器会忽略客户端中断,一直等着代理服务执行返回。并且如果执行没有发生错误,记录的日志是200日志。如果超时则会记录504。如果设置为off,则客户端中断后服务器端nginx立即记录499日志,但要注意,此时代理端的PHP程序会依然继续执行。可查看上面写的那篇文章。
nginx的proxy_ignore_client_abort默认是关闭的,即请求过程中如果客户端端主动关闭请求或者客户端网络断掉,那么Nginx会记录499。所以如果不想看到499报错,可以修改配置:
proxy_ignore_client_abort on ;
这样来说,499错误并不是一个问题,如果出现了大量的499的话,需要考虑为什么发生了这么多的客户端中断的问题。

    另外需要注意的一项是:proxy_ignore_client_abort配置只会对代理的配置,如果请求的是当前nginx服务器,直接执行PHP程序返回。则设置proxy_ignore_client_abort为on也不会起作用,仍会是记录499日志。proxy_ignore_client_abort的配置是配置在代理处理时用。如下:

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址