HTTP499状态码nginx下499错误的解决办法六一黑板报简单又漂亮
⽇志记录中HTTP状态码出现499错误有多种情况,我遇到的⼀种情况是nginx反代到⼀个永远打不开的后端,就这样了,⽇志状态记录是499、发送字节数是0。
⽼是有⽤户反映⽹站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get⽅式调⽤的接⼝不稳定,问了相关⼈员,说没有问题,为了拿到确切证据,于是我问相关⼈员要了nginx服务器的⽇志⽂件(awstats⽇志),分析后发现⽇志中很多错误码为499的错误,约占整个⽇志⽂件的1%,⽽它只占全部报错的70%左右(全部报错见下图),那么所有报错加起来就要超过1%了,这个量还是特别⼤的。
499错误是什么?让我们看看NGINX的源码中的定义:
涮羊肉起源ngx_string(ngx_http_error_495_page), /* 495, https certificate error */
ngx_string(ngx_http_error_496_page), /* 496, https no certificate */
张信哲 太想爱你10万车推荐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对应的是 “client has closed connection”。这很有可能是因为服务器端处理的时间过长,客户端“不耐烦”了。
Nginx 499错误的原因及解决⽅法
打开Nginx的access.log发现在最后⼀次的提交是出现了HTTP1.1 499 0 -这样的错误,在百度搜索nginx 499错误,结果都是说客户端主动断开了连接。
但经过我的测试这显然不是客户端的问题,因为使⽤端⼝+IP直接访问后端服务器不存在此问题,后来测试nginx发现如果两次提交post过快就会出现499的情况,看来是nginx认为是不安全的连接,主动拒绝了客户端的连接.
但搜索相关问题⼀直不到解决⽅法,最后终于在google上搜索到⼀英⽂论坛上有关于此错误的解决⽅法:
proxy_ignore_client_abort on;
Don't know if this is safe.能让你湿到不行的句子
就是说要配置参数 proxy_ignore_client_abort on;
表⽰代理服务端不要主要主动关闭客户端连接。
以此配置重启nginx,问题果然得到解决。只是安全⽅⾯稍有⽋缺,但⽐总是出现不到服务器好多了。
还有⼀种原因是我后来测试发现确实是客户端关闭了连接,或者说连接超时 ,⽆论你设置多少超时时间多没⽤原来是php进程不够⽤了改善⼀下php进程数问题解决默认测试环境才开5个⼦进程。
以上所述是⼩编给⼤家介绍的HTTP 499 状态码 nginx下 499错误的解决办法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论