nginx 499状态码
Posted 大数据从业者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 499状态码相关的知识,希望对你有一定的参考价值。
可以看到,499对应的是 “client has closed connection”。这很有可能是因为服务器端处理的时间过长,客户端“不耐烦”了。要解决此问题,就需要在程序上面做些优化了。
除了499,nginx还定义了495/496/497/498 这几个Status Codes,相应的意义也在上面的注释中可以看到。开源的东西,可以随时翻看源码,这一点很棒。
=========================================================================================================
HTTP 499 状态码 nginx下 499错误
日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499、发送字节数是0。
|
方法/步骤:
-
proxy_ignore_client_abort的含义。确定在客户端关闭连接时是否应关闭与代理服务器的连接,而不在等待响应。
-
默认 proxy_ignore_client_abort 是关闭的。此时在请求过程中如果客户端主动关闭请求、客户端网络断开,那么 Nginx 会记录 499。
-
如果使用了proxy_ignore_client_abort on。那么客户端主动断掉连接之后,Nginx 会等待后端服务器处理完(或者超时),然后记录“后端的返回信息”到日志。因此,如果后端返回200,就记录200 ;如果后端返回5XX ,那么就记录 5XX。如果超时(默认60s,可以用 proxy_read_timeout 和proxy_send_timeout设置),Nginx 会主动断开连接,记录504。
-
怎么在配置增加proxy_ignore_client_abort on。首先找到配置文件,然后打开它,找到http下的server下的location,把它加进去。配置文件路径(当你执行 nginx -t 的时候,nginx会去测试你的配置文件语法,并告诉你配置文件是否写得正确,同时也告诉了你配置文件的路径)
-
注:不建议使用proxy_ignore_client_abort 来处理这个错误。因为这样当有大量瞬间断开的请求时,后端会默默地全部处理,比较浪费资源,而且并发压力比较大时,用这种方法将压垮机器。这个事情交给 php-fpm 自己来处理其实挺合适。因为 PHP 默认当用户断开请求了会中断请求,如果不想自动中断请求,使用 ignore_user_abort() 就好了。
END
以上是关于nginx 499状态码的主要内容,如果未能解决你的问题,请参考以下文章