nginx proxy_buffering 并立即向客户端发送响应

nginx proxy_buffering 并立即向客户端发送响应

将问题分解为一句话:是否可以在 nginx 中打开 proxy_buffering,但当客户端速度足够快时立即将后端服务器的响应发送给客户端,如果不够快,则缓冲它?

我知道如果关闭 proxy_buffering,所有请求都会通过 nginx,但后端服务器工作进程仍处于打开状态,直到所有数据都发送到客户端。如果打开 proxy_buffering,nginx 会等到后端服务器完成后才开始将数据发送到客户端,后端服务器可以在数据到达客户端之前关闭该进程。

简单来说:我想要两者的优点:我希望客户端尽快获得后端服务器的第一个块,但我也希望后端服务器中所有无法传递给客户端的数据(例如慢速连接)都将被 nginx 缓冲,以便后端服务器进程可以尽快关闭。

要理解为什么我需要这个:我有一个 php 后端服务器,其中有一个按顺序刷新输出的应用程序。因此,如果您请求一个页面,则在启动该过程后,带有 css、js 等的 HTML 将几乎立即刷新,之后“繁重”的应用程序工作开始,我将部分 html 分段发送。因此,这样做的好处是客户端/浏览器可以在请求完成之前开始下载 .js、.css 并解析它们,因此我减少了网站的关键渲染路径。

问题是,如果 proxy_buffering 处于打开状态,客户端将无法获取任何数据,直到后端请求完成。如果我关闭 proxy_buffering,后端进程将保持打开状态,直到客户端收到最后一个数据。

提前致谢

相关内容