nginx 499错误原因及解决

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

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

nginx 499错误原因及解决_第1张图片

         解决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,nginx,nginx报错,499)