文章内容
2024/8/13 0:16:00,作 者: 黄兵
Nginx 上传大型文件相关配置
如果我们使用默认的 Nginx 配置,上传一个 2MB 的文件会出现:
413 Request Entity Too Large
出现这个问题的主要原因是:Nginx 默认情况下,Nginx 的文件上传大小限制是有限的,一般是2MB。
如果我们需要 Nginx 作为反向代理,上传大型文件,着我们需要修改 Nginx 的相关配置。
要配置 Nginx 作为反向代理来支持上传大文件(如最大 1TB),需要调整以下几个参数。这些配置可以放在 Nginx 的主配置文件(通常是 /etc/nginx/nginx.conf)或相应的服务器块(server {})中。
1. 配置 client_max_body_size
这个参数用于限制客户端请求主体的大小,即上传文件的最大大小。默认值通常是 1m,你需要将其设置为一个足够大的值来允许上传 1TB 的文件。
http {
...
client_max_body_size 1000G;
...
}
也可以在特定的服务器块或位置块中单独设置:
server {
...
client_max_body_size 1000G;
...
}
2. 配置 proxy_buffering
当代理大文件时,你可能需要禁用 Nginx 的缓冲,以减少内存使用。
location /upload {
proxy_buffering off;
proxy_pass http://backend_server;
}
3. 增加 proxy_read_timeout 和 proxy_send_timeout
上传大文件可能会花费很长时间,因此你可能需要增加这两个超时参数的值,以防止在传输大文件时连接超时。
http {
...
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
...
}
4. 配置 proxy_request_buffering
如果你希望避免 Nginx 在完全接收请求体之前将其缓冲到磁盘上,可以禁用请求缓冲:
location /upload {
proxy_request_buffering off;
proxy_pass http://backend_server;
}5. 配置 keepalive_timeout
上传大文件时,保持连接的时间也需要足够长,防止由于连接空闲而被关闭。
http {
...
keepalive_timeout 60s;
...
}6. 配置 worker_processes
如果你预计会有很多并发连接,可能需要调整 Nginx 的工作进程和连接数。
events {
worker_connections 1024; # 每个工作进程的最大连接数
}7. 检查系统限制
确保你的操作系统也允许处理大文件上传。例如,Linux 上可能需要调整 ulimit 和其他相关参数。
以上就是设置 Nginx 上传大型文件的相关设置。
其它相关推荐:
评论列表