带有大标头的请求失败

带有大标头的请求失败

我在 Nginx/Unicorn/Ubuntu 上运行了 rails 应用程序。Nginx 使用 Unicorn 作为上游进行设置,如下所示:

upstream unicorn {
  server unix:/path/to/sockets/unicorn.sock fail_timeout=0;
}

location @unicorn {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://unicorn;
}

除了一种请求类型之外,其他一切都正常。页面正在尝试将 HTML 保存到数据库。因此,这是一个很大的请求。请求被传递给 unicorn,HTML 被保存到数据库,但随后页面显示 502 错误。我检查了 nginx 日志,结果显示:

epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too (104: Connection reset by peer) while reading upstream

我尝试使用以下方法增加代理缓冲区大小:

http {
  ...
  proxy_buffer_size 128k;
  proxy_buffers 4 256k;
  proxy_busy_buffers_size 256k;
  ...
}

但问题仍然存在。

知道为什么会发生这种情况以及如何解决吗?

相关内容