nginx 上的 proxy_request_buffering 和 proxy_buffering 有什么区别?

nginx 上的 proxy_request_buffering 和 proxy_buffering 有什么区别?

我看到 proxy_request_buffering 将缓冲请求,而 proxy_buffering 将缓冲响应。

然而我想了解这背后的具体含义。

答案1

来自 Nginx文档

代理缓冲

Syntax: proxy_buffering on | off;
Default:    
proxy_buffering on;
Context:    http, server, location
Enables or disables buffering of responses from the proxied server.

当缓冲启用时,nginx 会尽快从代理服务器接收响应,并将其保存到由代理缓冲区大小代理缓冲区指令。如果整个响应不适合内存,则可以将其中的一部分保存到临时文件在磁盘上。写入临时文件由proxy_max_temp_file_sizeproxy_temp_file_write_size指令。

当缓冲被禁用时,响应会在收到后立即同步传递给客户端。nginx 不会尝试从代理服务器读取整个响应。nginx 一次可以从服务器接收的最大数据大小由代理缓冲区大小指示。

还可以通过在“X-Accel-Buffering”响应标头字段中传递“是”或“否”来启用或禁用缓冲。可以使用proxy_ignore_headers指示。

代理请求缓冲

Syntax: proxy_request_buffering on | off;
Default:    
proxy_request_buffering on;
Context:    http, server, location
This directive appeared in version 1.7.11.
Enables or disables buffering of a client request body.

启用缓冲后,整个请求主体将在将请求发送到代理服务器之前从客户端获取。

当缓冲被禁用时,请求主体在收到后会立即发送到代理服务器。在这种情况下,请求无法传递到下一个服务器如果 nginx 已经开始发送请求体。

当使用 HTTP/1.1 分块传输编码发送原始请求主体时,无论指令值如何,请求主体都将被缓冲,除非 HTTP/1.1 是已启用用于代理。

相关内容