Administrator
Published on 2025-05-04 / 5 Visits
0

nginx如何控制上传文件的大小

一、配置文件上传限制

修改Nginx配置文件
编辑Nginx主配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/sites-enabled/default),在httpserverlocation块中添加以下指令:

client_max_body_size 100M;  # 允许上传的最大文件大小(例如100MB)
  • 全局生效:配置在http块内

  • 针对虚拟主机:配置在server块内

  • 针对特定接口/路径:配置在location块内,如上传接口/upload

重启Nginx服务
保存配置文件后,执行以下命令使配置生效:


sudo nginx -t          # 检查配置语法
sudo systemctl restart nginx  # 重启服务(或使用nginx -s reload)

二、配置层级说明

配置位置

作用范围

示例场景

http

全局所有请求生效

所有服务统一限制为50MB

server

当前虚拟主机生效

仅特定域名允许100MB上传

location

匹配特定路径的请求生效

/api接口允许200MB


三、验证配置是否生效

  1. 浏览器测试
    上传超过限制的文件时,若返回413 Request Entity Too Large错误,则说明限制已生效。

命令行测试
使用curl模拟上传:


curl -v -F "file=@/path/to/large_file" http://your-domain.com/upload

四、其他相关配置

client_body_buffer_size
设置请求体缓存大小,建议与client_max_body_size保持一致:

client_body_buffer_size 100M; # 减少临时文件写入磁盘的频率:ml-citation{ref="4,5" data="citationList"}
  • 临时文件路径
    超出缓存大小的文件会暂存到client_body_temp目录(默认/tmp),需确保磁盘空间充足4


五、常见问题

  1. 配置未生效

    • 检查配置块层级是否正确(如location块未匹配到目标路径)3

    • 确认重启Nginx服务时未报错。