Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx 499错误码

Nginx 499错误码

作者头像
星哥玩云
发布于 2022-06-30 09:56:25
发布于 2022-06-30 09:56:25
1.6K00
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

今天发现nginx有不少的499错误,大约占了将近0.5%,而且是在新上线了一个含upstream的业务之后。

grep一下nginx源码,定义在ngx_request_t.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
* HTTP does not define the code for the case when a client closed
* the connection while we are processing its request so we introduce
* own code to log such situation when a client has closed the connection
* before we even try to send the HTTP header to it
*/
#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499

这下就很清楚了,这是nginx定义的一个状态码,用于表示这样的错误:服务器返回http头之前,客户端就提前关闭了http连接。

再grep下“NGX_HTTP_CLIENT_CLOSED_REQUEST”,发现目前这个状态值只在ngx_upstream中赋值。

upstream在以下几种情况下会返回499:

(1)upstream 在收到读写事件处理之前时,会检查连接是否可用:ngx_http_upstream_check_broken_connection,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    if (c->error) { //connecttion错误
     ……
        if (!u->cacheable) { //upstream的cacheable为false,这个值跟http_cache模块的设置有关。指示内容是否缓存。
            ngx_http_upstream_finalize_request(r, u, NGX_HTTP_CLIENT_CLOSED_REQUEST);
        }
}

如上代码,当连接错误时会返回499。

(2)server处理请求未结束,而client提前关闭了连接,此时也会返回499。

(3)在一个upstream出错,执行next_upstream时也会判断连接是否可用,不可用则返回499。

总之,这个错误的比例升高可能表明服务器upstream处理过慢,导致用户提前关闭连接。而正常情况下有一个小比例是正常的。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
服务器排障 之 nginx 499 错误的解决
An Nginx HTTP server extension. This codeis introduced to log the case when the connection is closed by client whileHTTP server is processing its request, making server unable to send the HTTP header back
迅达集团
2019/03/08
14K0
nginx 499 产生的原因
499 是 nginx 扩展的 4xx 错误,目的只是用于记录,并没有实际的响应。 看一下 nginx 源码 ngx_http_request.h 对 499 的定义:
码农编程进阶笔记
2021/07/20
1.5K0
我是这么学习nginx 499的
这篇文章从nginx的499着手,分析整个过程中是怎么产生499行为的,以及各种往返网络包出现的原因。说说我通过这个499问题一步一步分析的整个过程,不一定正确,但很有意思。
Bug开发工程师
2020/02/19
2.1K0
我是这么学习nginx 499的
Nginx神奇的499竟然不在HTTP响应码标准内?快来了解一下!
Nginx的访问日志中,存在499状态码的日志。但常见4xx状态码只有400、401、403、404等,499并未在HTTP RFC文档。这499错误日志,在流量较大场景下,特别是面向Internet的Web站点场景下还是很常见 。
JavaEdge
2023/09/15
2.2K0
Nginx神奇的499竟然不在HTTP响应码标准内?快来了解一下!
nginx upstream模块完整逻辑源码分析
1.启动upstream。 2.连接上游服务器。 3.向上游发送请求。 4.接收上游响应(包头/包体)。 5.结束请求。
stan1ey
2021/01/23
3.1K0
Nginx(五):http反向代理的实现
上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,以及详细讲解了其正向代理的具体实现过程。这已经让我们对整个nginx有了较深入的了解,但nginx核心固然重要,但其扩展功能才是其吸引大家的地方。而它的扩展功能又是无穷无尽的,这是好事又是坏事,好事是功能特别多,坏事是我们不可能都能探究其每个模块。
烂猪皮
2021/01/28
1K0
Nginx(五):http反向代理的实现
业务前端界面报错504排查思路和解决办法
本文主要是写的最近比较影响深刻的一次排查客户访问业务前端域名,报504,timeout错误问题的记录,该客户为私有化部署,给客户部署的服务存在跨洲调用,没有专线,澳洲调用欧洲的服务情况,可能存在网络延迟比较大,需要排查504的具体原因,然后通过优化参数临时解决
没有故事的陈师傅
2022/09/15
2.8K0
业务前端界面报错504排查思路和解决办法
nginx状态码处理源码分析
nginx状态码分为五大类: 100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 500-599 用于支持服务器错误。
stan1ey
2021/06/07
2.1K0
nginx状态码处理源码分析
Nginx+PHP(laravel) 环境 499 错误码排查过程小记
某公安项目过程中,在内网服务器部署 WNMP 环境,运行 Laravel 框架代码,后查看日志发现某一时刻突然所有请求 499,并持续一段时间,遂排查原因。
全栈程序员站长
2022/07/18
1.5K0
Nginx的 HTTP 499 状态码处理
  今天在处理一个客户问题,遇到Nginx access log中出现大量的499状态码。实际场景是:客户的域名通过cname解析到我们的Nginx反向代理集群上来,客户的Web服务是由一个负载均衡提供外网IP进行访问,负载均衡后面挂了多个内网web站点业务服务器。出现的访问日志如下所示:
全栈程序员站长
2022/07/18
13K0
Nginx的 HTTP 499 状态码处理
499问题思考
Nginx中 499状态码的定义是 client has closed connection,也就是客户端断开了连接。
只喝牛奶的杀手
2024/06/14
5170
499问题思考
聊聊nginx报错499问题
序 本文主要来聊一下nginx的access log当中出现的499问题。 问题描述 499 CLIENT CLOSED REQUEST A non-standard status code introduced by nginx for the case when a client closes the connection while nginx is processing the request. 原因 服务器返回http头之前,客户端就提前关闭了http连接,常见于后台接口处理时间比较长,而前端请求
code4it
2018/09/17
2.7K0
Nginx中常见问题与错误处理
具体场景:接入层的负载均衡的nginx集群转发给业务nginx,业务nginx再转发给后端的应用服务器。业务nginx配置文件如下:
黄规速
2024/05/24
4K0
Nginx中常见问题与错误处理
深入理解nginx stream proxy 模块的ssl连接原理
  我一直来对ssl建立连接的过程一知半解,以前分析nginx代码的时候一旦碰到ssl连接部分的代码都是直接跳过,前面在分析ngx_http_upstream_dynamic_module的时候正好想到了是不是可以给它添加一个能够支持https健康检查的功能,所以今天决定沉下心来仔细分析一下nginx本身的与上游服务器建立连接的实现逻辑。
码农心语
2024/04/09
1.3K0
深入理解nginx stream proxy 模块的ssl连接原理
nginx,ingress-nginx日常维护及报错
readv() failed (104: Connection reset by peer) while reading upstream
iginkgo18
2021/10/10
13.1K0
2024全网最全面及最新且最为详细的网络安全技巧 九之文件包含漏洞典例分析POC;EXP以及 如何防御和修复[含PHP源码和CTF精题WP详解](1)—— 作者:LJS
这篇文章研究的题目是:在使用Docker官方的PHP镜像php:7.4-apache时,Web应用存在文件包含漏洞,在没有文件上传的情况下如何利用?
盛透侧视攻城狮
2024/10/21
1400
2024全网最全面及最新且最为详细的网络安全技巧 九之文件包含漏洞典例分析POC;EXP以及 如何防御和修复[含PHP源码和CTF精题WP详解](1)—— 作者:LJS
业务量剧增后服务器常见返回码总结
Nginx返回码 500(Internal Server Error  内部服务器错误)
翎野君
2023/05/12
4700
nginx的timeout(基于nginx1.17.9)
nginx中使用timeout的地方非常多,本文主要分析客户端和nginx通信时涉及到的几个timeout。
theanarkh
2020/06/19
8620
Nginx code 状态码说明
最近了解下Nginx的Code状态码,在此简单总结下。一个http请求处理流程: 一个普通的http请求处理流程,如上图所示: A -> client端发起请求给nginx B -> nginx处理后
洗尽了浮华
2018/01/23
4.9K0
Nginx code 状态码说明
聊聊nginx的keepalive_time参数
nginx/src/http/ngx_http_header_filter_module.c
code4it
2023/12/05
3500
相关推荐
服务器排障 之 nginx 499 错误的解决
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验