比较讲解HTTP中499状态码和nginx下499错误

    日志记录中http状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499、发送字节数是0。

    老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awstats日志),分析后发现日志中很多错误码为499的错误,约占整个日志文件的1%,而它只占全部报错的70%左右(全部报错见下图),那么所有报错加起来就要超过1%了,这个量还是特别大的。

    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 499错误的原因及解决方法

    打开Nginx的access.log发现在最后一次的提交是出现了HTTP1.1 499 0 -这样的错误,在百度搜索nginx 499错误,结果都是说客户端主动断开了连接。

    但经过我的测试这显然不是客户端的问题,因为使用端口+IP直接访问后端服务器不存在此问题,后来测试nginx发现如果两次提交post过快就会出现499的情况,看来是nginx认为是不安全的连接,主动拒绝了客户端的连接.

    但搜索相关问题一直找不到解决方法,最后终于在google上搜索到一英文论坛上有关于此错误的解决方法:

proxy_ignore_client_abort on;

Don’t know if this is safe.

    就是说要配置参数 proxy_ignore_client_abort on;

    表示代理服务端不要主要主动关闭客户端连接。

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

    还有一种原因是 我后来测试发现 确实是客户端关闭了连接,或者说连接超时 ,无论你设置多少超时时间多没用 原来是php进程不够用了 改善一下php进程数 问题解决 默认测试环境才开5个子进程。

以上就是比较讲解HTTP中499状态码和nginx下499错误的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3165384.html

(0)
上一篇 2025年3月30日 21:22:04
下一篇 2025年3月30日 21:22:10

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 详解Nginx配置文件nginx.conf

    #定义nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn…

    编程技术 2025年3月30日
    100
  • Linux教程之Nginx的并发连接数和连接状态查询

    linux下查看nginx等的并发连接数和连接状态。 1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:  netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(…

    编程技术 2025年3月30日
    100
  • linux中xargs的用法详解

    xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.  xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此 这个命令也是后…

    编程技术 2025年3月30日
    100
  • 详解nginx高并发配置参数

    一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。 2.  worker_cpu…

    编程技术 2025年3月30日
    100
  • 提高nginx安全性方法

    nginx是当今最流行的web服务器之一。它为世界上7%的web流量提供服务而且正在以惊人的速度增长。它是个让人惊奇的服务器,我愿意部署它。 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的Nginx部署是安全的。 1. 在配置…

    编程技术 2025年3月30日
    100
  • 详解git 删除分支和回滚

    这篇文章主要介绍了git 删除分支和回滚的实例详解的相关资料,希望通过本文大家能理解掌握这部分内容,需要的朋友可以参考下 git 删除分支和回滚的实例详解 【git 删除本地分支】 git branch -D br 登录后复制 【git 删…

    编程技术 2025年3月30日
    100
  • Linux中find命令用法详解

    在windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用linux中的find的命令结合其-path -prune参数来看看在linux中怎么实现此功能。 假如在当前目录下查找文件,且当前目录下有很多文件及目录(…

    编程技术 2025年3月30日
    100
  • linux下登录ftp, lftp命令详解

    使用lftp  1、登录ftp 代码: lftp 用户名:密码@ftp地址:传送端口(默认21) 用法 (1)lftp username:password@127.0.0.1:21 回车 (2)lftp username@127.0.0.1…

    编程技术 2025年3月30日
    100
  • linux中关于ls命令的实例详解

    ls命令是linux下最常用的命令。ls命令就是list的缩写。下面通过本文给大家分享linux 中ls命令详解,感兴趣的朋友一起看看吧 ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以…

    编程技术 2025年3月30日
    100
  • linux中关于mkdir命令的详解

    mkdir 是一个用来在 linux 系统下创建目录的命令。此命令属于内建命令。接下来通过本文给大家分享linux mkdir命令详解,感兴趣的朋友一起看看吧 mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的…

    编程技术 2025年3月30日
    100

发表回复

登录后才能评论