Nginx自定义状态码499出现原因

499状态码定义

维基百科的定义

499 Client Closed Request (Nginx)
Used in Nginx logs to indicate when the connection has been closed by client while the server is still processing itsrequest, making server unable to send a status code back

499状态码是nginx自定义的状态码,不是标准的状态码,在官网的定义是Client Closed Request,也即客户端关闭了请求连接,原因大部分是因为接口响应太久了,客户端设置了超时时间,直接关闭了请求连接。原因可能是网络网速问题,也有可能是后端接口响应太慢了

处理方法

  • 可能是客户端设置的超时时间太短了,这种情况可以检查客户端设置的超时时间,改长一点即可
  • 优化后端接口代码,提高接口能支持的并发数和响应速度
  • 如果是频繁的post请求,nginx会认为不安全,这种情况会直接返回499状态码,保护系统安全

如果系统需要记录后端响应日志,可以设置proxy_ignore_client_abort参数设置为on,开启后,后端接口超过了客户端的响应时间,后端接口会继续执行,日志也会记录到nginx里,不过这种做法会在一定程度上造成nginx的资源使用,需要根据实践情况使用,如果为了系统安全,建议还是不开启

location =/api { 
    proxy_ignore_client_abort   on; 
    proxy_pass  http://web.server.com;
} 

proxy_ignore_client_abort参数设置为on后,如果客户端断开连接,nginx也不会断开与后端服务端的连接,会等待后端服务器接口的返回,然后记录到日志,如果是返回5xx,就记录5xx状态码日志,返回200成功,就记录200状态码的日志,如果超过了响应时间,默认60s,可以用 proxy_read_timeout 设置,就记录504状态码的日志

相关推荐

  1. Nginx定义状态499出现原因

    2024-04-29 19:52:05       11 阅读
  2. react js定义实现状态管理

    2024-04-29 19:52:05       26 阅读
  3. Wpf-定义状态控件

    2024-04-29 19:52:05       17 阅读
  4. nginx日志定义和统计处理

    2024-04-29 19:52:05       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-29 19:52:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-29 19:52:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-29 19:52:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-29 19:52:05       18 阅读

热门阅读

  1. 建造者模式(装修公司装修套餐)

    2024-04-29 19:52:05       12 阅读
  2. curl_opt参数解析

    2024-04-29 19:52:05       11 阅读
  3. TensorFlow框架介绍-深度学习

    2024-04-29 19:52:05       12 阅读
  4. 十大经典排序算法之希尔排序。

    2024-04-29 19:52:05       11 阅读
  5. 单例模式代码简单演示

    2024-04-29 19:52:05       8 阅读
  6. ceph笔记 2

    2024-04-29 19:52:05       13 阅读
  7. Redis学习(二)|深入学习Redis 持久化

    2024-04-29 19:52:05       12 阅读