如何在DigitalOcean App Platform中调整上传文件大小限制
解决DigitalOcean App Platform大文件上传413错误方案
413 Request Entity Too Large错误来源通常包含应用层配置限制、平台反向代理层限制两类,按以下步骤依次调整即可:
1. 调整Uvicorn请求大小上限
Uvicorn默认最大请求体为100MB,需修改启动参数放开限制,单位为字节,建议配置为略大于你需要的700MB,比如800MB(约800000000字节):
- 若使用命令行启动Uvicorn,添加对应参数即可,示例:
uvicorn main:app --host 0.0.0.0 --port 8000 --limit-max-request-size 800000000 - 若使用Python代码启动Uvicorn,添加
limit_max_request_size配置项:
import uvicorn if __name__ == "__main__": uvicorn.run( "main:app", host="0.0.0.0", port=8000, limit_max_request_size=800 * 1024 * 1024 )
2. 调整FastAPI文件上传限制
FastAPI底层基于Starlette,默认存在表单和单文件大小限制,初始化实例时添加对应配置:
from fastapi import FastAPI app = FastAPI( file_max_size=800 * 1024 * 1024, # 单文件最大限制 form_max_size=800 * 1024 * 1024 # 表单总大小限制,多文件上传时需要调整 )
3. 调整DigitalOcean App Platform平台级请求限制
DigitalOcean App Platform的全局负载均衡默认有请求体大小上限,需要修改应用的App Spec配置生效:
- 进入DigitalOcean控制台对应应用的「设置」页面,找到「App Spec」选项
- 在服务配置块中添加
maximum_request_body_size字段,单位为字节,示例配置:
services: - name: 你的服务名称 # 原有配置(镜像地址、构建规则、环境变量等)保持不变 maximum_request_body_size: 800000000
- 保存配置后平台会自动触发重新部署,部署完成后配置生效。
额外注意
如果你的Docker镜像中内置了Nginx作为反向代理,还需要在Nginx配置中添加client_max_body_size 800M;,可放在http、server或对应location配置块中。
内容的提问来源于stack exchange,提问作者Ahmed Gamaleldin
相关产品推荐
相关产品推荐

