uwsgi_request_buffering
'uwsgi_request_buffering' 指令用于控制在处理 uWSGI 请求时是否对请求体进行缓冲。 — NGINX HTTP Core
uwsgi_request_buffering
httpserverlocation
语法uwsgi_request_buffering on | off;
默认值on
上下文http, server, location
模块NGINX HTTP Core
参数flag
说明
'uwsgi_request_buffering' 指令在 NGINX 中对于控制与 uWSGI 应用交互时如何处理请求体非常重要。启用时,NGINX 会在接收完整的请求体后才进行缓冲,从而让上游服务器一次性访问完整的负载。这对于处理大文件上传或上游服务器需要在处理前对整个请求体进行验证的场景尤其有用。 另一方面,在高并发或请求体较小的场景下,禁用请求缓冲可以降低内存使用并提高性能,因为 NGINX 会将请求体以流式方式直接传递给 uWSGI 应用而不进行缓冲。该 'uwsgi_request_buffering' 参数接受一个标志,其值可以是 'on' 或 'off'。设置为 'on' 时启用缓冲;设置为 'off' 时禁用缓冲。 理解该指令对应用性能和后端处理选择的影响非常重要。在需要实时流式传输数据(例如文件上传)或当响应需要在请求的部分内容可用时立即发送的场景中,禁用缓冲通常是首选。相反,对于复杂的负载或请求完整性至关重要的情况,启用此选项可确保在处理前对整个请求进行完整分析。
配置示例
server {
listen 80;
server_name example.com;
location / {
uwsgi_pass 127.0.0.1:8000;
uwsgi_request_buffering off;
}
}⚠
如果使用 'off',当发送较大的负载时可能导致更高的资源消耗,因为它们会直接流式传输到 upstream,且不会进行缓冲。
⚠
如果 upstream 应用无法处理部分请求(即期望完整的请求主体),请将其设置为 'on'。