Nginx:为 Docker 化项目禁用请求正文缓冲

Nginx:为 Docker 化项目禁用请求正文缓冲

我有 Nginx 1.18(未 dockerized)来在 Ubuntu 20.04 上托管 REST API 应用程序(在 Docker 容器中运行),并且我尝试设置proxy_request_buffering允许使用流式传输上传大文件。这是我的服务器块:

server {
   server_name mydomain;
   location ~ ^/(api|static\-data|static\-files)/ {
     proxy_pass         http://127.0.0.1:5001;
     proxy_http_version 1.1;
     proxy_set_header   Upgrade $http_upgrade;
     proxy_set_header   Connection keep-alive;
     proxy_set_header   Host $host;
     proxy_cache_bypass $http_upgrade;
     proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header   X-Forwarded-Proto $scheme;
     proxy_connect_timeout       300;
     proxy_send_timeout          300;
     proxy_read_timeout          300;
     send_timeout                300;
     proxy_request_buffering off;
     client_max_body_size 1000m;
     client_body_buffer_size 1000m;
   }
}

但它对我来说不起作用。

除了上传 API,我还有另一个 API 来显示进度。当上传 API 处于待处理状态时,进度 API 的响应显示,我的应用程序在文件被 Nginx 完全缓冲之前不会收到上传请求。因此,我的后端应用程序完全接收文件,而在客户端,进度条显示零百分比,直到整个文件上传完毕。

顺便说一句,当我使用 Kestrel 进行本地测试时,一切都正常。有什么想法吗?

相关内容