proxy_send_timeout控制Nginx向后端发送请求体的超时时间,仅适用于非长连接下数据发送阶段,不控制TCP建连、响应头等待或整周期;默认60秒,需按location精细配置。

proxy_send_timeout 用于控制 Nginx 向后端服务器(如 FastCGI、uWSGI、上游 HTTP 服务)发送请求数据时的超时时间,即从 Nginx 开始发送请求体(比如 POST 数据)起,到整个请求体发送完成为止的最大等待时间。它**不控制连接建立或响应接收阶段**,只管“发数据”这个动作本身。
配置位置和作用范围
该指令只能在 http、server 或 location 块中使用,对当前作用域下的所有代理请求生效。常见写法:
- 全局设置(影响所有 proxy_pass):http { proxy_send_timeout 60; }
- 按虚拟主机设置:server { proxy_send_timeout 30; }
- 按具体接口精细控制:location /api/ { proxy_send_timeout 120; }
关键细节和常见误区
注意以下几点,避免配置失效或理解偏差:
- 单位是秒(支持小数,如 proxy_send_timeout 3.5;)
- 超时触发条件:Nginx 在发送请求体过程中,如果连续 未向后端写出任何字节 达到设定时长,就断开连接
- 它和 proxy_connect_timeout(建连超时)、proxy_read_timeout(等后端响应超时)相互独立,需配合使用
- 若后端接收缓慢(如慢速上传、流式处理),但 Nginx 仍在持续发送数据,该超时不会触发;只有发送卡住(如后端 TCP 窗口满、网络中断)才会生效
典型搭配建议
生产环境建议结合业务场景合理设置,例如:
- 普通 REST API(JSON 小体):proxy_send_timeout 10;
- 文件上传接口(大 Body):proxy_send_timeout 300;(同时配好 client_max_body_size 和 client_body_timeout)
- 实时流式服务(如 SSE、gRPC):proxy_send_timeout 3600;(甚至设为 0 表示禁用超时,慎用)
验证是否生效
可通过 Nginx 错误日志观察是否触发超时,典型错误信息为:
upstream timed out (110: Connection timed out) while sending request to upstream
配合 error_log debug; 可进一步确认超时发生在 send 阶段而非 connect 或 read 阶段。


















