nginx修改上传文件大小限制

本文将介绍怎样通过nginx修改上传文件大小限制

在工作中,经常需要用到大名鼎鼎的 nginx 服务器实现反向代理。

当我们通过 nginx 代理的 HTTP 服务上传大文件时,如果抛出“413 Request Entity Too Large”错误,则说明我们上传的文件太大(nginx 默认允许文件上传的大小为 1M)。这就需要修改 nginx 配置文件,调整上传文件大小限制。

在 nginx 中,调整上传文件只需要配置如下参数:

  • client_max_body_size:表示客户端请求服务器最大允许大小

  • client_body_buffer_size:表示 nginx 分配给请求数据的 Buffer 大小

client_max_body_size

client_max_body_size 默认 1M,表示客户端请求服务器最大允许大小,在 "Content-Length" 请求头中指定。如果请求的正文数据大于 client_max_body_size,HTTP 协议会报错 413 Request Entity Too Large。就是说如果请求的正文大client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。

client_body_buffer_size

nginx 分配给请求数据的 Buffer 大小,如果请求的数据小于 client_body_buffer_size 直接将数据先在内存中存储。如果请求的值大于 client_body_buffer_size 小于 client_max_body_size,就会将数据先存储到临时文件中,在哪个临时文件中呢?

client_body_temp 指定的路径中,默认该路径值是 /tmp/。

所以配置的 client_body_temp 地址,一定让执行的 nginx 的用户组有读写权限。否则,当传输的数据大于 client_body_buffer_size,写进临时文件失败会报错。

示例配置

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    server {
        listen       8080;
        server_name  localhost;
        # 修改文件大小限制为 50m,默认1m
        client_max_body_size    50m;
        # 修改分配给请求数据的 Buffer 大小为 1m
        client_body_buffer_size 1m;

        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}
看书和学习是思想的经常营养,是思想的无穷发展。 —— 冈察洛夫
1 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号