【nginx error log】 /var/log/nginx/error.log: 级别:error 类型: [other] 次数: 1 错误信息(只取第一条): upstream prematurely closed connection while reading response header from upstream, client: 50.30.156.24 server: xx requests: “GET x HTTP/1.1” upstream: “x
在使用Nginx作为反向代理服务器时,可能会遇到这样的错误:“upstream prematurely closed connection while reading response header from upstream”。这个错误通常意味着在Nginx尝试从上游服务器读取响应时,上游服务器过早地关闭了连接。
错误原因
这个错误可能有多种原因,包括上游服务器的性能问题、网络问题、或者是上游服务器处理请求的时间超过了Nginx的超时设置。
第一种可能
#在代理上加上
location / {
#根据 NGINX 文档,连接超时不能超过 75 秒“定义与代理服务器建立连接的超时。应该注意,这个超时通常不能超过 75 秒
#虽然说不超过75秒,但是我实际写的 数值 都比这两个大 你也可以设置大一些
proxy_read_timeout 3000s;
proxy_connect_timeout 750s;
proxy_pass http://xxx;
}
还有一种可能就是 下载尝试从 Nginx 代理的服务器下载 2GB 文件时文件流太大导致出问题;
语法:proxy_max_temp_file_size 大小;
默认值:proxy_max_temp_file_size 1024m;
上下文:http, server, location
当启用来自代理服务器的响应缓冲,并且整个响应不适合由 proxy_buffer_size 和 proxy_buffers 指令设置的缓冲区时,可以将部分响应保存到临时文件中。该指令设置临时文件的最大大小。一次写入临时文件的数据大小由 proxy_temp_file_write_size 指令设置。
零值禁用对临时文件的响应的缓冲。
此限制不适用于将缓存或存储在磁盘上的响应。
症状:
下载被强制停止在 1GB 左右,
Nginx 声称上游关闭了连接,但没有代理服务器正在返回完整内容。
解决方案:
proxy_max_temp_file_size代理位置增加,4096m并开始发送完整内容。
————————————————
location / {
#在加上这个试一下
proxy_max_temp_file_size 4096m;
}