概述

ngx_http_proxy_module 模块提供了 proxy_request_bufferingproxy_buffering 两个配置项, 分别用于控制是否缓冲请求/应答. 当开启时, 客户端请求和上游应答会先在 NGINX 内暂存, 当接收到完整的请求应答后才会转发给上游或客户端. 如下图所示:

1
2
3
4
5
----------                      -----------                        -----------
| | ---- req-ori ---> |buffering| ---- req-proxy ---> | |
| client | | NGINX | | backend |
| | <--- resp-ori ---- |buffering| <--- resp-proxy ---- | |
---------- ----------- -----------

默认情况下, NGINX 会缓冲请求/应答, 我认为这样做的目的是为了减轻上游的压力. 当代理服务器与上游服务器之间网络状况良好时, req/resp-proxy 持续时间会更短.

配置项:

1
2
3
4
5
6
7
 Syntax: 	proxy_request_buffering on | off;
Default: proxy_request_buffering on;
Context: http, server, location

Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location