状态码是客户端(例如浏览器)在Nginx处理请求时关闭连接时引入的非标准状态代码。
一、如何修复客户端关闭请求错误客户端不处理请求并最终得到错误代码的原因有多种。在以下部分中,我们将帮助您确定不同的原因以及如何在每种情况下解决它们。
1.网站位于代理后面时出现错误当您的用户和Nginx之间有负载平衡服务时,您可能会发现错误。当您的Nginx站点由CDN提供服务或位于WAF(Web应用程序防火墙)后面时,也会发生类似的情况。
当处理浏览器请求的前端服务器是处于反向代理模式的Nginx服务器,并且它将请求发送到您的服务器站点,但您的站点进程超过前端服务器的等待时间时,会发生错误。
要修复此错误,您可以:
增加应用程序服务器的处理能力。通过增加“处理能力”,您将减少Nginx客户端在您的服务面前的等待时间。
如果无法增加应用程序服务器的功能,请增加代理的超时(负载均衡器、CDN、防火墙等)。
2.设置超时的正确方法如果您的设置中有代理,例如“负载均衡器”、防火墙、CDN等,则应设置超时,以便首先使应用程序服务器超时,然后再使用户的其他代理超时。
例子:
用户→CDN→Nginx负载均衡器→Nginx应用程序→Php_fpm
建议按如下方式设置超时:
n秒超时。在配置文件中设置:Php_fpmphp.inimax_execution_timerequest_terminate_timeoutphp_fpm
n+1秒到Nginx应用程序超时。在你的nginx配置中设置:fastcgi_read_timeout
n+2秒到Nginx负载均衡器超时在您的位置location设置超时:
proxy_passproxy_connect_timeoutproxy_send_timeoutproxy_read_timeout
CDN的超时时间为n+秒。注意:如果您无法设置CDN的超时,请找到它的超时时间并根据需要调整其他超时。
二、当服务器关闭连接时错误这可能是以下情况:
您的网站正在使用Nginx服务器运行;
请求被传递给应用处理器,例如:php_fpm
请求将传递到您的API此设置是使用nginx指令配置的:fastcgi_pass
此错误代码是在服务器速度太慢时生成的。例如,您的WordPress页面进程花费太长时间或冻结。
要更正此错误,您可以:
增加服务器的处理能力。通过增加“处理能力”,您将减少Nginx等待的时间。
如果无法增加服务器功率,请使用指令增加Nginx超时:fastcgi_read_timeout
三、如何在应用程序崩溃时修复错误如果您的应用程序在没有响应的情况下彭奎,则解决方案可能在您的API或CGI代码中。
注意:这是最不常见的情况,PHP和其他处理器总是抛出注释来通知问题。如果应用程序抛出错误,Nginx会向您传递5XX错误代码,而不是。
如果您的应用程序崩溃,您有4个选项:
首先,告诉Nginx等待更长的时间。通过修改:fastcgi_read_timeout;
如果等待更长时间不能解决问题,请增加服务器的处理能力;
如果错误发生在特定页面或请求上,则可能是应用程序或内容管理器中的“挂起”或“代码崩溃”
如果您使用WordPress,请检查插件兼容性;如果进行了数据库查询,请检查表和索引的良好状态。
四、当您的服务器受到DOS或DDOS攻击时错误可能存在有人攻击并故意消耗服务器资源的情况,这使得服务器无法处理请求并按时返回结果。要验证这是否是您的情况:查看您的分析,并搜索提供状态代码的请求的流量峰值:
如何修复DOS/DDOS攻击时的错误:
在这种情况下,最好的解决方案是结合使用安全措施:
预防:避免非合法流量。您可以使用公共和私有黑名单的组合来过滤恶意流量;
添加针对DOS(拒绝服务)和DDOS(分布式拒绝服务)的基础架构保护。寻找具有准备好缓解此类攻击的基础架构的托管服务提供商;
在服务器前面添加保护层、安全代理;
添加外部安全服务。例如著名的Cloudflare,他们将分布式基础架构放在您的服务器前面以抵御DDOS攻击。
以下是所有的HTTP状态代码及其含义:OK创建已接受20非权威信息无内容重置内容部分内容多状态已报告已使用个IM00多项选择01永久搬家02找到0查看其他04未修改05使用代理07临时重定向08永久重定向错误请求未经授权需要付款40禁止未找到方法不允许不可接受需要代理身份验证请求超时冲突消失了所需长度前提条件失败41有效载荷太大请求URI太长不支持的媒体类型请求的范围无法满足期望失败我是茶壶错误的请求无法处理的实体42锁定失败的依赖项需要升级需要前提条件请求过多41请求标头字段太大连接关闭无响应因法律原因不可用客户端关闭请求