Nginx上传大文件的配置
Nginx上传大文件的配置
最近再部署完性能测试平台后进行测试时发现上传的文件数据包后,通过后台log看到上传成功了,保存了文件。但是在解析文件时候后台返回错误,看了Nginx的log发现是request timeout了,所以针对大文件上传,nginx需要设置一下信息。
1. 代理超时设置(最关键)
在对应 location 块中增加或修改这些参数:
proxy_read_timeout
:这是解析阶段的超时时间,我的这次报错就是因为这个没设置。
location /upload {proxy_pass http://backend_server;# 从后端服务器读取响应的超时(解析阶段的超时)proxy_read_timeout 600s; # 调整为文件解析所需的时间(600秒=10分钟)# 向后端服务器发送请求的超时(上传阶段的超时)proxy_send_timeout 300s; # 文件上传超时(300秒=5分钟)# 连接后端服务器的超时proxy_connect_timeout 30s;# 关闭代理缓冲区(防止内存溢出)proxy_request_buffering off;proxy_buffering off;
}
2. 客户端请求设置
这里最重要设置上传文件大小
server {# 允许最大请求体大小(必须足够容纳大文件)client_max_body_size 2G; # 设为比实际文件更大的值# 客户端发送请求头的超时client_header_timeout 30s;# 客户端发送请求体的超时client_body_timeout 300s; # 大文件上传需延长
}