跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Nginx利用http块send_timeout控制后端响应发送超时

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

相关文章