日志记录中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错误的详细内容。更多信息请关注PHP中文网其他相关文章!

本文介绍如何有效清理Debian系统中的旧版本软件和内核,释放磁盘空间并提高系统性能。操作前请务必备份重要数据。一、清除无用软件包使用apt命令行工具可以轻松删除不再需要的软件包及其依赖项:打开终端。执行sudoapt-getautoremove命令自动删除已安装软件包的冗余依赖项。使用sudoapt-getpurge命令删除指定软件包及其配置文件。例如,删除firefox及其配置文件,执行sudoapt-getpurgefirefox。

网站性能优化离不开对访问日志的深入分析。Nginx日志记录了用户访问网站的详细信息,巧妙利用这些数据,可以有效提升网站速度。本文将介绍几种基于Nginx日志的网站性能优化方法。一、用户行为分析与优化通过分析Nginx日志,我们可以深入了解用户行为,并据此进行针对性优化:高频访问IP识别:找出访问频率最高的IP地址,针对这些IP地址优化服务器资源配置,例如增加带宽或提升特定内容的响应速度。状态码分析:分析不同HTTP状态码(例如404错误)出现的频率,找出网站导航或内容管理中的问题,并进

在Debian系统中,readdir函数用于读取目录内容,但其返回的顺序并非预先定义的。要对目录中的文件进行排序,需要先读取所有文件,再利用qsort函数进行排序。以下代码演示了如何在Debian系统中使用readdir和qsort对目录文件进行排序:#include#include#include#include//自定义比较函数,用于qsortintcompare(constvoid*a,constvoid*b){returnstrcmp(*(

在Debian系统中,readdir函数用于读取目录内容。要使其支持远程文件系统,需确保远程文件系统已正确挂载到本地。以下步骤详细说明如何实现:一、选择合适的协议:选择合适的远程文件系统协议至关重要,例如NFS、Samba、FTP、SSHFS等。不同协议的配置方法差异较大。二、安装必要软件包:根据所选协议,安装相应的软件包。例如,NFS需要nfs-common或nfs-kernel-server;Samba需要samba;SSHFS需要fuse和sshfs。使用apt-getinst

readdir函数是Linux系统中用于读取目录内容的标准工具,在Debian及大多数Linux发行版中均可用。作为稳定且广泛使用的发行版,Debian的readdir函数通常具有良好的兼容性,能与标准C库(例如glibc)及其他Linux工具无缝集成。Debian的更新日志和安全公告中鲜有提及readdir函数的兼容性问题。例如,Debian12.10的更新主要集中在安全性和稳定性改进,这些更新一般不会影响readdir等核心系统工具的兼容性。如果您在

本文介绍如何在Debian系统中配置Tomcat日志。Tomcat日志配置文件通常位于/path/to/tomcat/conf/logging.properties。通过修改此文件,您可以自定义日志级别、格式和输出位置。日志文件存放位置Tomcat日志文件默认存储在$CATALINA_BASE/logs目录下。$CATALINA_BASE指的是Tomcat的安装根目录,如果未指定,则与$CATALINA_HOME(Tomcat安装目录)相同。常用Linux命令查看Tomcat日志以下是一些常

本文介绍三种在Debian系统中清空回收站的方法,选择最适合您的方式即可。方法一:图形界面(GUI)对于使用图形界面的Debian用户(例如GNOME或KDE),清理回收站非常简单:打开文件管理器:点击桌面上的文件管理器图标(通常是一个文件夹),或使用快捷键Ctrl E。找到回收站:在文件管理器中找到并点击“回收站”或“垃圾桶”图标。清空回收站:在回收站窗口中,点击“清空回收站”或类似的按钮,确认操作即可。方法二:命令行界面(CLI)如果您更熟悉命令行,可以使用终端进行

本文介绍如何在Debian系统中清理无用软件包,释放磁盘空间。第一步:更新软件包列表确保你的软件包列表是最新的:sudoaptupdate第二步:查看已安装的软件包使用以下命令查看所有已安装的软件包:dpkg--get-selections|grep-vdeinstall第三步:识别冗余软件包利用aptitude工具查找不再需要的软件包。aptitude会提供建议,帮助你安全地删除软件包:sudoaptitudesearch'~pimportant'此命令列出标记


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver Mac版
视觉化网页开发工具