无法将HTTP响应转发回HTTP客户端:用户似乎点击了浏览器中的"停止"按钮

ope*_*per 7 ruby-on-rails passenger nginx ruby-on-rails-3

我面临的问题是:

我通过ajax从浏览器发出请求并发送处理请求,一旦进行了ajax调用,我会显示一个带有进度条的弹出窗口,弹出窗口大致保留在2到4分钟之间的任何位置并突然关闭.当我通过chrome网络选项卡看到请求时,我看到该请求在弹出窗口显示的相同持续时间内停止.我看到逻辑正在按预期在后台执行,但弹出窗口没有等待响应并在它应该之前关闭.

我已将日志级别设置为7,我看到以下信息

如果有50条记录需要处理,我会在这50条记录开始处理之前看到这些信息(即我看到下面的50行)

[pid = 29768 thr = 70024879087720 file = abstract_request_handler.rb:472 time = 2016-08-30 08:06:43.250]:在主插座上接受新请求

最后我看到了这个

[pid = 29571 thr = 139782938920704 file = ext/nginx/HelperAgent.cpp:923 time = 2016-08-30 08:10:3​​2.682]:无法将HTTP响应转发回HTTP客户端:似乎用户点击了在他的浏览器中的"停止"按钮上.

我怀疑它有一些超时问题,但不确定它是否处于乘客级别或ngnix级别.

我已经尝试将各种ngnix超时参数设置为更高的值,但它没有帮助.

  proxy_read_timeout 400s;
  client_body_timeout 180s;
  keepalive_timeout 180s;
  client_header_timeout 180s;

**I suspect it might be some issue with passenger config, but not sure.**
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道我能做什么,以便请求继续,而不会突然结束

小智 0

这是文件上传/下载?对于下载,我在相关位置使用

proxy_buffering             off;
proxy_request_buffering     off;
chunked_transfer_encoding   on;
client_body_timeout         3600;
proxy_read_timeout          900;
Run Code Online (Sandbox Code Playgroud)

对于文件上传,我使用

client_max_body_size    10m;
client_body_timeout     600s;
Run Code Online (Sandbox Code Playgroud)

(警告,如果您在关联位置中有返回位置,则应将其设置在第一个位置)

或者某种通过 http 的事件?与大块?活着 ?对于块我使用:

proxy_buffering         off;
proxy_buffer_size       4k;
proxy_request_buffering off;
proxy_cache             off;
underscores_in_headers  on;
Run Code Online (Sandbox Code Playgroud)

(有关块的信息,NGINX 纠正了 1.11.2 if chunk 中带有 sub_filter 指令的旧错误)

在您的浏览器中,在“网络”选项卡的“调试”窗口中,请求失败后显示的错误或状态是什么?
状态代码和/或响应标头?
有时预览中也可能有回复/信息。