proxy_send_timeout仅控制Nginx向后端发送请求体时两次数据包间的最大空闲时间,不负责客户端上传、后端响应、TCP连接建立及长连接通信;合理设置需匹配业务场景并协同其他超时参数。

proxy_send_timeout 本身不保障数据传输质量,它只控制 Nginx 向后端发送请求体时的单次空闲等待上限。真正影响传输质量的是它是否与业务场景匹配、是否与其他超时参数协同、以及是否配合底层传输机制。调高它不会让网络更稳定,但设得太低会无故中断合法上传。
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
它管什么、不管什么要分清
- ✅ 管:Nginx 把请求体(比如大 JSON、Base64 图片、XML 文件)发给后端过程中,两次数据包之间的最大静默时间
- ❌ 不管:
- 客户端到 Nginx 的上传(那是
client_body_timeout) - Nginx 读后端响应(那是
proxy_read_timeout) - TCP 连接建立(那是
proxy_connect_timeout) - 长连接复用后的持续通信(HTTP/1.1 keepalive 或 HTTP/2 下基本不生效)
- 客户端到 Nginx 的上传(那是
怎么设才不算拖后腿
- 普通 API 请求:保持默认 60 秒足够,多数请求体几毫秒就发完
- 大文件上传(如视频、镜像包):按带宽和体积估算
- 示例:1GB 文件在 5Mbps 带宽下理论传输约 27 分钟 → 设
proxy_send_timeout 1800(30 分钟)更稳妥
- 示例:1GB 文件在 5Mbps 带宽下理论传输约 27 分钟 → 设
- 若后端处理慢但请求体发得快(如先收参再异步跑任务),这个值无需调大——重点该调
proxy_read_timeout
必须同步配好的搭档
-
proxy_connect_timeout要小于proxy_send_timeout,否则连接还没建好就超时了 -
proxy_read_timeout应 ≥proxy_send_timeout,避免请求刚发完,响应还没开始返回就被砍断 - 后端接收超时(如 Spring Boot 的
server.tomcat.connection-timeout)建议设为 Nginx 值的 0.8 倍,留出协商缓冲 - 开启
upstream keepalive和proxy_http_version 1.1,否则每次都要重连,再长的 timeout 也白搭
实际配置建议(针对上传路径)
location ^~ /api/upload/ {
proxy_pass http://backend;
proxy_connect_timeout 15s;
proxy_send_timeout 1800s; # 允许30分钟发完大文件
proxy_read_timeout 1800s; # 后端处理+响应也预留同样时间
proxy_buffering off; # 避免缓冲阻塞流式上传
}不复杂但容易忽略。

















