nginx 499错误原因及解决

Posted 龙叔运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 499错误原因及解决相关的知识,希望对你有一定的参考价值。

        在nginx中 499状态码的定义是  client has closed connection,也就是客户端断开了连接。

        所以显然,客户端端主动关闭请求或者客户端网络断掉时,于是nginx就记录了499状态,并且断开了和后面服务端的连接(这样可能导致服务端返回数据时,因为连接断开而报错)

 

         解决499问题:

        1、查看服务端为什么响应这么慢,是否需要优化,或者调大客户端方的连接超时时间,不那么快断开

        2、proxy_ignore_client_abort参数设置为on,默认是off的

        location =/api { 
            proxy_ignore_client_abort   on; 
            proxy_pass  http://service_backends;
        } 

        这个参数的意思是:在客户端主动关闭连接后, nginx 与分发服务器的连接是否保持连接。

        如果参数设置了on,则客户端如果断开连接,nginx也不会断开与后端服务端的连接,nginx会等待后端处理完(或者超时),然后记录「后端的返回信息」到日志。所以,如果后端返回 200,就记录 200 ;如果后端放回 5XX ,那么就记录 5XX 。
        如果超时(默认60s,可以用 proxy_read_timeout 设置),Nginx 会主动断开连接,记录 504。

        这个方案只是解决了两个问题:(1)nginx上499的错误(2)服务端因为连接断开报Broken pipe的错误

        所以最好的方法还是优化服务端

 

 

 

以上是关于nginx 499错误原因及解决的主要内容,如果未能解决你的问题,请参考以下文章

nginx 499错误原因及解决

HTTP 499状态码 nginx下499错误及其解决方法

python https request产生 nginx 499错误的解决

尝试解决nginx的499错误1

NGINX代理返回代码499问题分析与处理

nginx出现504错误的原因分析及解决