iis服务器助手广告
返回顶部
首页 > 资讯 > 服务器 >NGINX代理返回代码499问题分析与处理
  • 164
分享到

NGINX代理返回代码499问题分析与处理

nginx运维服务器 2023-09-12 09:09:38 164人浏览 泡泡鱼
摘要

一、背景 ​ 我们通过Nginx作为互联网代理服务器,通过它实现我行内部系统向互联网系统的接口访问及调用;但是在使用过程中,不时的会出现大量返回代码为499的问题(正常访问返回为200),甚至有时候部

一、背景

​ 我们通过Nginx作为互联网代理服务器,通过它实现我行内部系统向互联网系统的接口访问及调用;但是在使用过程中,不时的会出现大量返回代码为499的问题(正常访问返回为200),甚至有时候部分系统在报499的错误时,会影响到某一业务的正常使用。此时,我们也会怀疑nginx代理出现了问题,于是重启或者重新加载nginx服务。但是比较奇怪的是,如果nginx整个出现了问题,那么为什么会出现某个业务异常而不是在nginx上的所有服务异常呢?于是,我们则需要对为什么nginx会返回499错误代码展开分析和研究。

二、499代码代表了什么

​ nginx返回499错误,那么我们就到nginx的源码里面看看,是否存在499返回代码的解释呢?通过在nginx的源码进行查找,发现有一段这样的代码:

#define NGX_Http_LAST_4XX  430#define NGX_HTTP_OFF_5XX   (NGX_HTTP_LAST_4XX - 400 + NGX_HTTP_OFF_4XX)    ngx_string(ngx_http_error_494_page),     ngx_string(ngx_http_error_495_page),     ngx_string(ngx_http_error_496_page),     ngx_string(ngx_http_error_497_page),     ngx_string(ngx_http_error_404_page),     ngx_null_string,                         ngx_string(ngx_http_error_500_page),    ngx_string(ngx_http_error_501_page),    ngx_string(ngx_http_error_502_page),    ngx_string(ngx_http_error_503_page),    ngx_string(ngx_http_error_504_page),    ngx_string(ngx_http_error_505_page),    ngx_null_string,                         ngx_string(ngx_http_error_507_page)

​ 从这里,我们则可以看到ngx_null_string对应的就是499代码,其表示了client has closed connection,即说明了是客户端已经关闭了连接。

​ 那么为什么客户端会主动去关闭连接呢?其实最简单的解释就是因为服务端处理时间过长,然后客户端无法等到服务端处理完成,然后就会去主动关闭连接,然后代理就会为我们返回499错误。

​ 在进行资料查询后,我们可以总结出一般有几种情况,可能造成499错误:

​ 1)客户端在服务端响应前确实主动关闭了连接;

​ 2)客户端在连接服务端进行业务的过程中,网络发生了中断,出现了连接超时;

3)两次提交post过快,nginx会认为是不安全的连接,主动拒绝了客户端的连接(往往是有人故意攻击,消耗服务器资源);

4)PHP的进程数量不够用,需要调整php的进程数量;

三、如何处理499问题

​ 在nginx的配置中有一个参数为:proxy_ignore_client_abort

​ 该参数的含义是:确定在客户端关闭连接时,是否关闭与代理服务器的连接,而不再等待响应。

​ 该值的默认值为off,此时则代表在发生交易的过程中,如果客户端无论是发生了主动关闭连接、客户端网络中断、访问服务超时、服务器未处理的情况,那么 Nginx 都会记录 499;这样则可能会存在一个问题就是可能无法真实反应客户端服务访问的真实情况。

​ 而该值改为on的时候,则表示客户端主动断掉连接之后,Nginx 会等待后端服务器处理完(或者超时),然后记录“后端的返回信息”到日志。因此,会有几种情况:

1、如果后端返回200,就记录200 ;2、如果后端返回5XX ,那么就记录 5XX;3、如果超时(默认60s,可以用 proxy_read_timeout 和proxy_send_timeout设置),Nginx 会主动断开连接,记录504。

这样则可以将访问异常的真实问题反应出来。

​ 因此,我们可以通过在http域、server域、location域内加入:

```proxy_ignore_client_abort on```

四、风险

​ 根据上面的分析,其实我们可以发现,其实发生499的问题时候的可能性会很多,而且如果出现客户端在建立连接后主动关闭了连接的情况则会是一种正常的场景。当然,虽然我们可以通过打开proxy_ignore_client_abort的参数来解决499的问题,且可以暴露出客户端到服务端的真实原因。但是打开该设置后也会存在一定风险,即当有大量瞬间断开的请求时,后端会默默地全部处理掉,比较浪费资源,且并发压力比较大时,也有可能造成服务器出现被压垮宕机的可能。

五、结论

​ 结合上述的分析,考虑到风险,我们可以得出以下结论,如果我们的机器只存在单机环境或者无冗余环境的时候,我们尽可能的不要去设置这个参数,从而避免服务器被压垮的风险;当我们有足够的环境做冗余的时候或者在前端负载均衡对连接进行分发负载的时候,我们则可以考虑打开该参数,从而便于运维人员分析问题异常。

来源地址:https://blog.csdn.net/wx370092877/article/details/128773103

--结束END--

本文标题: NGINX代理返回代码499问题分析与处理

本文链接: https://www.lsjlt.com/news/404270.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • NGINX代理返回代码499问题分析与处理
    一、背景 ​ 我们通过nginx作为互联网代理服务器,通过它实现我行内部系统向互联网系统的接口访问及调用;但是在使用过程中,不时的会出现大量返回代码为499的问题(正常访问返回为200),甚至有时候部...
    99+
    2023-09-12
    nginx 运维 服务器
  • 浅析nginx客户端返回499的错误码的问题
    目录网络架构和背景上游服务抓包负载均衡的问题?修改配置 Nginx的配置我们服务器客户端一直有返回错误码499的日志,以前觉得比例不高,就没有仔细查过,最近有领导问这个问题,为什么耗...
    99+
    2022-11-13
    nginx返回499错误码 nginx 499错误码
  • Nginx 代理解决跨域问题多种情况分析
    何为跨域问题 跨域本人经过两天的磨练,大量地翻阅网上资料,通俗地讲,就是,同一ip,同一域名,不同端口下,需要互相访问,需要cookie的传递以及数据的获取。 一般在项目中,前后端完...
    99+
    2024-04-02
  • 怎么处理Docker代理问题
    本篇内容主要讲解“怎么处理Docker代理问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么处理Docker代理问题”吧!在本地安装Kubernetes时,遇到错误消息:request ca...
    99+
    2023-06-04
  • Python相关问题代码分析
    这篇文章主要介绍“Python相关问题代码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python相关问题代码分析”文章能帮助大家解决问题。1、反射算术运算符你可能知道 Python 里面的魔...
    99+
    2023-07-06
  • 解决nginx代理 url重写的问题
    前后端分离,打包好的前端项目,访问后端404解决方法:nginx 增加配置 location /prod-api { proxy_pass http://xx...
    99+
    2024-04-02
  • ajax后台处理返回json值示例代码怎么写
    这篇文章将为大家详细讲解有关ajax后台处理返回json值示例代码怎么写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。代码如下:public ActionF...
    99+
    2024-04-02
  • React配置多个代理实现数据请求返回问题
    目录使用axios以及express框架进行数据传输App.js:index.js:server1.js:server2.jssetupProxy.js:运行使用axios以及exp...
    99+
    2024-04-02
  • Java代理模式实例代码分析
    今天小编给大家分享一下Java代理模式实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、动态代理模式动态代理的特...
    99+
    2023-06-29
  • Java动态代理与静态代理实例分析
    这篇文章主要介绍了Java动态代理与静态代理实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java动态代理与静态代理实例分析文章都会有所收获,下面我们一起来看看吧。一、静态代理静态代理的使用静态代理,代...
    99+
    2023-07-02
  • Nginx部署vue项目和配置代理的问题解析
    1.nginx安装和启动 # 安装nginx sudo apt-get install nginx # 启动 sudo service nginx start 验证安装 #...
    99+
    2024-04-02
  • 阿里云代理返点计算方式与收益分析
    阿里云是阿里巴巴集团的云计算服务品牌,以其高效率、高性能、高可靠性的服务赢得了广泛赞誉。作为阿里云的代理,你可能对返点制度有些疑惑。这篇文章将详细解释阿里云代理返点的计算方式与收益分析。 一、阿里云代理返点的计算方式阿里云代理返点的计算方式...
    99+
    2023-11-19
    阿里 收益 返点
  • 如何解决react-native WebView返回处理问题
    这篇文章主要介绍了如何解决react-native WebView返回处理问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.前言项目中有...
    99+
    2024-04-02
  • nginx代理实现静态资源访问的示例代码
    目录一. 目标:二. 实现效果:三. 具体配置1. nginx配置本地静态工程代理2. win10配置本地域名实现域名访问3.nginx配置页面预览路由一. 目标: 为了通过ngin...
    99+
    2024-04-02
  • 关于nginx 实现jira反向代理的问题
    摘要:配置nginx反向代理jira并实现https 配置Tomcat 在本文中,我们设置可以在地址http://jira.aniu.so/jira(标准HTTP端口80)上访问JI...
    99+
    2024-04-02
  • Python文件处理方法实例代码分析
    今天小编给大家分享一下Python文件处理方法实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2024-04-02
  • Nginx配置反向代理解决跨域问题
    通过Nginx配置反向代理结果跨域问题 第一步:下载Nginx 一、下载 官网下载地址:http://nginx.org/en/download.html 我下载的版本:http://nginx.or...
    99+
    2023-09-06
    nginx 服务器 运维
  • C++中代码优化问题的分析与解决方法
    C++中代码优化问题的分析与解决方法摘要:在进行C++程序开发时,我们常常需要关注代码的性能优化。本文将介绍一些常见的代码优化问题,并提供相应的解决方法和具体代码示例,旨在帮助读者提高C++程序的执行效率。内存管理问题内存管理是代码优化中一...
    99+
    2023-10-22
    内存管理 (Memory management) 并发编程 (concurrent programming) 优化算法
  • C++中代码优化问题的分析与解决方案
    C++中代码优化问题的分析与解决方案在C++编程中,代码优化是一个重要的方面。优化代码可以使程序执行效率更高,运行速度更快,并减少资源的占用。本文将探讨一些常见的代码优化问题,并提供相应的解决方案和具体的代码示例。避免频繁的内存分配与释放在...
    99+
    2023-10-22
    优化策略 (Optimization strategy) 性能分析 (Performance Analysis) 微优化
  • 探讨如何处理Git公共分支代码污染的问题
    随着软件开发的快速迭代以及多人协同开发的需求,代码管理工具成为每个开发者必备的利器。而Git,作为目前最流行的分布式版本控制系统,已经成为了技术领域中不可或缺的组件之一。但是,在多人协同开发的过程中,有时会发生公共分支代码污染的情况,这会严...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作