前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx自定义状态码499出现原因

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

作者头像
SmileNicky
发布2024-05-24 14:18:52
2530
发布2024-05-24 14:18:52
举报
文章被收录于专栏:Nicky's blogNicky's blog

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的资源使用,需要根据实践情况使用,如果为了系统安全,建议还是不开启

代码语言:javascript
复制
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状态码的日志

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 499状态码定义
  • 处理方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档