Nginx的 HTTP 499 状态码处理

Posted Dale工作学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx的 HTTP 499 状态码处理相关的知识,希望对你有一定的参考价值。

1、前言

  今天在处理一个客户问题,遇到nginx access log中出现大量的499状态码。实际场景是:客户的域名通过cname解析到我们的Nginx反向代理集群上来,客户的Web服务是由一个负载均衡提供外网IP进行访问,负载均衡后面挂了多个内网web站点业务服务器。出现的访问日志如下所示:

2、处理方法

    499错误是什么?让我们看看NGINX的源码中的定义:
  ngx_string(ngx_http_error_495_page), /* 495, https certificate error */
  ngx_string(ngx_http_error_496_page), /* 496, https no certificate */
  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发现如果两次提交post过快就会出现499的情况,看来是nginx认为是不安全的连接,主动拒绝了客户端的连接.

      在google上搜索到一英文论坛上有关于此错误的解决方法:
      proxy_ignore_client_abort on;
      Don’t know if this is safe.
      就是说要配置参数 proxy_ignore_client_abort on;
      表示代理服务端不要主要主动关闭客户端连接。

      以此配置重启nginx,问题果然得到解决。只是安全方面稍有欠缺,但比总是出现找不到服务器好多了。

以上是关于Nginx的 HTTP 499 状态码处理的主要内容,如果未能解决你的问题,请参考以下文章

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

HTTP 499 状态码 nginx下 499错误

HTTP 499 状态码 nginx下 499错误

nginx 499 状态码优化

nginx-499状态码

nginx 499状态码