Nginx的499个错误代码(Nginx 499 error codes)

2019-06-18 14:00发布

我得到了很多的499个nginx的错误代码。 我看,这是一个客户端的问题。 这不是nginx的或我uWSGI栈的问题。 我注意到,当得到一个499 uWSGI的相关记录。

address space usage: 383692800 bytes/365MB} {rss usage: 167038976
bytes/159MB} [pid: 16614|app: 0|req: 74184/222373] 74.125.191.16 ()
{36 vars in 481 bytes} [Fri Oct 19 10:07:07 2012] POST /bidder/ =>
generated 0 bytes in 8 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1
switches on core 1760)
SIGPIPE: writing to a closed pipe/socket/fd (probably the client
disconnected) on request /bidder/ (ip 74.125.xxx.xxx) !!!
Fri Oct 19 10:07:07 2012 - write(): Broken pipe [proto/uwsgi.c line
143] during POST /bidder/ (74.125.xxx.xxx)
IOError: write error

我要寻找一个更深入的解释,并希望它是什么错我的nginx的配置为uwsgi。 我把它表面的价值......它不是一个我problem..its客户端的问题。

谢谢

Answer 1:

HTTP 499中的Nginx意味着客户端关闭连接之前服务器回答该请求。 以我的经验通常是由客户端超时造成的。 当我知道这是Nginx上特定的错误代码。



Answer 2:

就我而言,我很急,结束了误解日志。

其实真正的问题是nginx的和uwsgi,而不是浏览器和nginx的之间的通信。 如果我加载该网站是在我的浏览器,并已等了很久我会得到一个“504 - 错误的网关”。 但是,过了这么久,我一直在尝试的东西,然后在浏览器中刷新。 所以,我从来没有等待足够长的时间来看到504错误。 当在浏览器刷新,那就是当先前的请求被关闭,Nginx的写的日志作为499英寸

在这里,我将假定读者知道作为littele像我一样,当我开始打转转。

我的设置是一个反向代理,nginx的服务器和应用服务器,它背后的uWSGI服务器。 所有的客户端请求会去nginx的服务器,然后转发到uWSGI服务器,然后发送响应原路返回。 我想这是每个人如何使用nginx的/ uwsgi,并应该使用它。

我nginx的工作,因为它应该的,但什么是错与uwsgi服务器。 有两种方法(可能更多),其中uwsgi服务器可能无法到nginx的服务器响应。

1)uWSGI说,“我处理了,就等着你很快就会得到回应”。 nginx的有一段时间,它是愿意等待,FX 20秒。 之后,它会响应客户端,具有504错误。

2)uWSGI是死的,或在nginx的等待它uWSGi死亡。 nginx的看到的时候了,在这种情况下,它会返回一个499错误。

我被在客户端(浏览器)发出请求测试我的设置。 在浏览器中什么都没有发生,它只是不停地挂着。 也许10秒(小于超时)之后,我得出结论的东西是不对的(这是真的),并通过命令行关闭了uWSGI服务器。 然后我会去uWSGI设置,尝试新的东西,然后重新启动服务器uWSGI。 我关闭了uWSGI服务器的那一刻,nginx的服务器会返回一个499错误。

所以,我一直在调试与499 erroe,这意味着谷歌搜索的499错误。 但是,如果我已经等了很久,我会得到504错误。 如果我已经得到了504错误,我本来可以更好地理解这个问题,然后就可以进行调试。

所以得出的结论是,这个问题是与uWGSI,它不停地挂(“等一会儿,只是长一点的话,我会为你找出答案......”)。

我怎么固定问题,我不记得了。 我想这可能是由很多原因引起。



Answer 3:

客户端关闭了连接并不意味着它是一个浏览器的问题!? 一点也不!

你可以找到一个日志文件499个错误,如果你在你的网络服务器(Nginx的),无论是AWS或HAProxy的(自定义)的前面有一个LB(负载均衡)。 提到LB将作为客户端nginx的行动。

如果您运行HAProxy的默认值:

    timeout client  60000
    timeout server  60000

这将意味着,LB将60000毫秒之后超时,如果没有来自nginx的回应。 超时可能发生了需要执行更多的时间繁忙的网站或脚本。 你需要找到超时,会为你工作。 例如,它延伸到:

    timeout client  180s
    timeout server  180s

你将可能设置。

根据您的设置,您可能会看到在浏览器中504网关超时错误,这表明什么是错用php-fpm的,但不会是在你的日志文件499个错误的情况。



Answer 4:

在我来说,我得到了499,当客户端的API关闭它得到任何回应之前的连接。 从字面上看发过帖子,并立即关闭连接。 这是通过选项解析:

proxy_ignore_client_abort上

Nginx的文档



Answer 5:

这个错误是很容易使用的PHP-FPM标准nginx的配置重现。

保持F5键向下一个页面上会造成几十刷新请求到服务器。 每个先前请求是通过在新的刷新浏览器取消。 以我为例,我发现几十个499的在我的客户的网上商店日志文件。 从一个角度nginx的观点:如果响应尚未下一次刷新请求之前nginx的传递到客户端登录的499错误。

mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:32 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:33 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:33 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:33 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:33 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:34 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:34 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:34 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:34 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:35 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)
mydomain.com.log:84.240.77.112 - - [19/Jun/2018:09:07:35 +0200] "GET /(path) HTTP/2.0" 499 0 "-" (user-agent-string)

如果PHP-FPM处理需要较长的时间(如heavyish WP页)它可能会导致问题,当然。 我听说过的php-fpm的崩溃,比如,但是我相信他们可以防止配置的服务适当处理一样调用xmlrpc.php。



Answer 6:

......来到这里,从谷歌搜索

我找到了答案其他地方在这里- > https://stackoverflow.com/a/15621223/1093174

这是提高我的AWS弹性负载均衡器的连接空闲超时!

(我不得不建立一个Django网站nginx的/ apache的反向代理,和真的真的真的登录后台工作/观点超时)



Answer 7:

一旦我得到499“请求已经被杀毒禁止”作为一个AJAX HTTP响应(误报卡巴斯基互联网安全与光启发式分析,深启发式分析正确地知道有什么不对)。



Answer 8:

其中一个原因此行为可能是你正在使用httpuwsgi ,而不是socket 。 如果您使用的使用下面的命令uwsgi直接。

           uwsgi --socket :8080 --module app-name.wsgi

在.ini文件相同的命令

          chdir = /path/to/app/folder
          socket = :8080
          module = app-name.wsgi


Answer 9:

我遇到过这个问题,原因是由于浏览器卡巴斯基保护插件。 如果遇到上述情况,请禁用插件,看看是否能解决您的问题。



Answer 10:

很多情况下,导致499错误,我的情况之一是,Content-Length的场错过了从pocco客户端的HTTP请求



文章来源: Nginx 499 error codes