客户端通过nginx取消请求是否传递给fastcgi

时间:2018-10-01 22:42:34

标签: nginx go fastcgi nginx-reverse-proxy

我将NGINX与ngx_http_fastcgi_module一起用作反向代理。它将请求代理到执行PHP-CGI流程的自定义Golang FastCGI。

有些请求由于我们的客户正在使用一些复杂的代码而花费了过多的时间。如果用户在等待请求时单击其他链接,浏览器将取消先前的请求,NGINX将看到该请求:

[info] 24#24: *1516 client 1.2.3.4 closed keepalive connection

太好了!但是我的上游PHP-CGI进程将继续运行直到超时。如果用户继续单击更多链接,则会消耗大量资源。我怀疑我的问题可能是NGINX没有明确取消上游请求。我找到了fastcgi_ignore_client_abort设置,似乎默认情况下它会被 not 忽略(这很好)。它说:

  

确定在客户端不等待响应就关闭连接时是否应关闭与代理服务器的连接。

这是否意味着它实际上也在终止上游请求,或者只是忽略了上游请求/响应?

如果应该向上游发送信号,那么NGINX中是否有一种方法可以验证其是否按预期工作?

在快速CGI方面,Golang服务器在执行请求时正在监听Done()中的http.Request.Context()。如果NGINX明确终止了上游请求,我们认为应该检测到它。有人知道这是不正确的吗?

0 个答案:

没有答案