如何使用Apache APISIX v3.8.0限制文件上传大小?
在Apache APISIX v3.8.0中实现文件上传大小限制
你可以使用APISIX内置的limit-body插件来实现文件上传大小限制,这个插件专门用于限制请求体的最大尺寸,完全适配文件上传场景。
配置步骤
- 创建或更新目标路由
针对你的/file/upload/abcd.png路径,在路由中启用limit-body插件,示例配置如下(以APISIX Admin API调用为例):
curl http://127.0.0.1:9180/apisix/admin/routes/1 \ -H 'X-API-KEY: your-api-key' \ -X PUT -d '{ "uri": "/file/upload/abcd.png", "plugins": { "limit-body": { "max_body_size": 10485760, # 限制为10MB,单位是字节 "allow_decompression": false # 若上传文件是压缩格式,可设为true解压后检查大小,文件上传通常无需开启 } }, "upstream": { "type": "roundrobin", "nodes": { "your-upstream-server:port": 1 } } }'
- 参数说明
max_body_size: 必填,设置允许的请求体最大字节数,比如10MB对应10*1024*1024=10485760。allow_decompression: 可选,默认false,若开启,APISIX会先解压gzip/deflate格式的请求体再检查大小,适合压缩后的文件上传场景。
- 验证效果
当上传文件大小超过设置的max_body_size时,APISIX会直接返回413 Request Entity Too Large状态码,拒绝该请求。
注意事项
- v3.8.0版本的APISIX默认已内置
limit-body插件,无需额外安装。 - 如果需要对域名下所有上传路径统一限制,可将插件配置在
global_rule或service级别,而非单独路由。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

