我得到了很多499 NGINX错误码。我知道这是客户端的问题。这不是NGINX或我的uWSGI堆栈的问题。当a得到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没有问题。我只看表面。好像是客户的问题。


当前回答

在我的例子中,我有这样的设置

AWS ELB >> ECS(nginx) >> ECS(php-fpm).

我为ECS(php-fpm)服务配置了错误的AWS安全组,因此Nginx无法接触到php-fpm任务容器。 这就是为什么我在nginx任务日志中得到错误

499 0 - elb-healthchecker/2.0

健康检查配置为检查php-fpm服务并确认其正常运行并返回响应。

其他回答

Nginx中的HTTP 499意味着客户端在服务器响应请求之前关闭了连接。以我的经验,通常是由客户端超时引起的。据我所知,这是Nginx特定的错误代码。

出现这种行为的原因之一可能是你在uwsgi上使用了http而不是socket。如果您直接使用uwsgi,请使用以下命令。

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

ini文件中的相同命令是

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

这并没有回答OPs的问题,但由于我在激烈地寻找答案后来到这里,我想分享我们的发现。

在我们的例子中,这些499是意料之中的。例如,当用户在某些搜索框中使用提前输入功能时,我们会在日志中看到类似的内容。

GET /api/search?q=h [Status 499] 
GET /api/search?q=he [Status 499]
GET /api/search?q=hel [Status 499]
GET /api/search?q=hell [Status 499]
GET /api/search?q=hello [Status 200]

因此,在我们的情况下,我认为使用proxy_ignore_client_abort是安全的,这是在前面的回答中建议的。谢谢你!

在我的例子中,我有这样的设置

AWS ELB >> ECS(nginx) >> ECS(php-fpm).

我为ECS(php-fpm)服务配置了错误的AWS安全组,因此Nginx无法接触到php-fpm任务容器。 这就是为什么我在nginx任务日志中得到错误

499 0 - elb-healthchecker/2.0

健康检查配置为检查php-fpm服务并确认其正常运行并返回响应。

对我来说,我已经启用了ufw,但我忘记暴露我的上行端口。_。