proxy_send_timeout控制nginx向后端发送请求体的超时,仅适用于非长连接下数据发送阶段,不控制tcp建连、响应等待或整周期;默认60秒,需据文件大小与后端接收速率估算并同步调大client_body_timeout、client_max_body_size及后端限制。

proxy_send_timeout 控制的是 Nginx 向上游服务器(比如后端应用)发送请求体(request body)时的超时时间,不是整个请求的耗时,也不是等待响应的时间。
它只管“发数据”这一段
这个指令生效的前提是:Nginx 已经把请求头发完了,正在往上游服务器传输请求体(例如 POST 或 PUT 请求中较大的表单数据、文件上传内容等)。一旦开始发请求体,Nginx 就会启动一个计时器。如果在这段时间内没发完,或者中间卡住(比如网络慢、上游不收数据),就会中断连接并返回 504 Gateway Timeout。
- 默认值通常是 60 秒
- 它不包含建立 TCP 连接、发送请求头、等待响应这些阶段
- 如果请求没有请求体(如纯 GET 请求),该超时基本不触发
和 proxy_read_timeout 的区别要分清
proxy_read_timeout 管的是 Nginx 发完请求后,等上游返回响应的空闲时间;而 proxy_send_timeout 只管“发请求体”这一个动作。两者互不影响,但容易混淆。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
- 比如上传一个 100MB 文件,Nginx 花了 90 秒才发完 → 若 proxy_send_timeout 设为 60,就会在 60 秒时断开
- 若发完用了 40 秒,但后端处理花了 120 秒才回包 → 这时由 proxy_read_timeout 决定是否超时
调大它的常见场景
当后端需要较长时间接收大请求体(如大文件上传、长文本提交),且网络带宽有限或上游读取缓慢时,需适当调高该值。
- 配合 client_max_body_size 使用,避免上传被截断
- 注意:调太大可能让异常连接长期占用资源,建议按实际业务最大上传耗时略留余量
- 单位是秒,支持小数(如 300.5),但通常用整数更易维护
配置位置和继承关系
该指令可出现在 http、server、location 块中,遵循就近原则。location 中设置会覆盖 server 中的同名配置。
- 示例:
proxy_send_timeout 300;(5 分钟) - 设为 0 表示禁用超时(不推荐,有风险)
- 需确保 upstream 侧也有对应读取超时设置,否则单边调大无意义










