send_timeout控制Nginx向客户端发送响应体时两次写操作间的超时,非后端响应超时;后端响应超时应配置proxy_read_timeout等对应指令。
send_timeout
并不控制后端响应的发送超时,它控制的是 Nginx 向
客户端
发送响应数据时的超时行为。
send_timeout 的真实作用
该指令定义 Nginx 在向客户端传输响应体(response body)过程中,两次写操作之间的最大等待时间。如果在指定时间内无法继续发送数据(例如客户端网络慢、接收缓冲区满、连接中断),Nginx 会主动关闭连接。
仅适用于已建立连接且正在发送响应体的阶段
对请求头、响应头、重定向等不生效
默认值通常为 60 秒,单位是秒(可带毫秒,如
)
真正影响后端响应的超时配置
若你希望控制 Nginx 与后端(如 FastCGI、proxy、uWSGI)交互过程中的超时,应使用对应模块的指令:
proxy_timeout
系列(反向代理场景):
:建立连接到后端的超时
:Nginx 向后端发送请求体的超时(非响应)
:Nginx 等待后端返回响应的超时(这才是“后端响应超时”)
fastcgi_timeout
系列(PHP-FPM 场景):
、
、
uwsgi_timeout
、
scgi_timeout
等同理
常见误用与建议
把
设得很小(如 5s),容易导致大文件下载、长轮询、流式响应被意外中断,尤其在弱网或移动端场景下。
普通网页响应:保持默认 60s 通常足够
大文件下载或 SSE/Stream:可适当调大,如
需精确控制后端耗时?优先检查并调整
或
理解指令作用对象(客户端 vs 后端)是正确配置的关键。混淆两者会导致超时策略失效或引发意外断连。
send_timeout 15.5s;proxy_connect_timeoutproxy_send_timeoutproxy_read_timeoutfastcgi_connect_timeoutfastcgi_send_timeoutfastcgi_read_timeoutsend_timeoutsend_timeout 300s;proxy_read_timeoutfastcgi_read_timeout