文章内容

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_timeoutproxy_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 上传大型文件的相关设置。


其它相关推荐:

1、Nginx 配置文件 nginx.conf 详解

2、Nginx 支持HTTP/2

3、Flask+Gunicorn+Nginx安装

4、Nginx 多上游服务器问题

5、nginx http跳转到https

分享到:

发表评论

评论列表