4

我正在运行 ThreadPool rainbows + nginx(unix 套接字)

在大文件上传时,我在 nginx 错误日志中得到以下信息(应用程序日志中没有任何内容):

readv() failed (104: Connection reset by peer) while reading upstream

浏览器收到响应:

413 Request Entity Too Large

为什么会这样?

  • “client_max_body_size 80M;” 在 nginx 中同时设置 http 和服务器级别(以防万一)
  • nginx 通过 unix 套接字与彩虹通信(上游套接字 + 位置@proxy_pass)
  • 我在其他日志中看不到任何内容。我检查过:
    • 彩虹日志
    • 工头日志
    • 应用程序日志
    • dmesg 和 /var/log/messages
  • 上传文件时会发生这种情况 ~> 1 MB 大小
4

3 回答 3

2

( ECONNRESETConnection reset by peer) 错误意味着连接被后端应用程序不干净地关闭。这通常发生在后端应用程序死亡时,例如由于分段错误,或者被OOM 杀手杀死。要找出确切原因,您必须检查后端日志(如果有)和/或系统日志。

于 2012-10-31T16:09:26.943 回答
1

也许您已经client_max_body_size设置了nginx.conf将主体大小限制为 1Mb 的设置,例如

client_max_body_size 1M;

在这种情况下,您需要将其删除以允许上传超过 1M 的文件。

于 2012-11-02T03:40:00.513 回答
1

原来 Rainbows 有一个名为的配置选项client_max_body_size,默认为 1 MB 该选项记录在这里

如果启用此选项,Rainbows 将413静默处理大型请求。除非您在它前面运行某些东西,否则您可能不知道它正在破裂。

Rainbows! do
  # let nginx handle max body size
  client_max_body_size nil 
end
于 2012-11-03T01:25:37.897 回答