You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx 反向代理下大文件上传至 aiohttp 服务失败问题咨询

问题根因

你遇到的问题核心是Nginx默认的请求缓冲逻辑与aiohttp异步服务对Expect: 100-continue头的处理逻辑不兼容,你之前调整的客户端缓冲区、超时类参数均未命中问题本质。

具体触发逻辑

HTTP 1.1协议中,客户端上传大于特定大小的文件时,会默认先发送携带Expect: 100-continue头的预检请求,等待服务端返回100状态码后才会发送实际的文件内容。
Nginx默认不会将Expect头转发给后端服务,而是自行处理:当请求体大小超过client_body_buffer_size配置的阈值时,Nginx会先把请求体写入本地磁盘缓存,等完整接收所有请求内容后再统一转发给后端。而aiohttp作为异步Web服务,默认没有适配Nginx的这种大包转发逻辑,双方等待逻辑冲突就会导致连接直接挂起。

修复方案

在你对应的Nginx反向代理location配置块中添加以下3行配置即可:

proxy_set_header Expect $http_expect;
proxy_http_version 1.1;
proxy_request_buffering off;

各配置作用说明:

  • proxy_set_header Expect $http_expect:将客户端发送的Expect头原样转发给aiohttp服务,由后端处理100-continue预检逻辑
  • proxy_http_version 1.1:将Nginx反向代理使用的HTTP协议版本升级到1.1,兼容100-continue交互逻辑
  • proxy_request_buffering off:关闭Nginx的请求体缓冲功能,不需要等完整接收客户端请求后再转发,收到多少内容就实时转给后端,匹配aiohttp的异步处理特性
验证步骤

修改配置后执行nginx -s reload重载配置,再上传大于220KB的文件测试即可,你之前已经配置的client_max_body_size等参数无需修改。

内容的提问来源于stack exchange,提问作者user3370112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 07:12:02