配置NGINX最大上传大小无效,上传图片遇413错误求助
解决Docker部署Nginx代理Django时413请求实体过大问题
1. 先确认Nginx配置是否真的生效
- 进入Nginx容器执行
nginx -T(大写T),会输出当前所有生效的配置,搜索client_max_body_size,确认是否存在1024M的设置,避免被其他配置覆盖。 - 若使用Docker Compose部署,检查本地配置文件的挂载路径是否正确——比如是否将本地的nginx.conf/default.conf挂载到容器内的
/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,挂载错误会导致配置无法生效。
2. 排查是否有多层代理限制
如果架构中存在多层Nginx代理(比如前端还有反向代理,或使用了云服务商的负载均衡、CDN),这些中间层也会限制请求体大小,需要在所有代理层都添加client_max_body_size 1024M;配置。
3. 检查uWSGI的请求体限制
uWSGI默认请求体大小限制约1MB,需修改其配置:
- 在uwsgi.ini配置文件中添加:
limit-post = 1073741824 # 对应1024MB,单位为字节
- 或在启动uWSGI时添加参数:
--limit-post 1073741824
修改完成后重启uWSGI对应的容器。
4. 调整Django的上传大小限制
Django默认的DATA_UPLOAD_MAX_MEMORY_SIZE和FILE_UPLOAD_MAX_MEMORY_SIZE约为2.5MB,超过该值会将文件写入临时文件,但过小的限制也会引发问题,在settings.py中修改:
DATA_UPLOAD_MAX_MEMORY_SIZE = 1073741824 # 1024MB FILE_UPLOAD_MAX_MEMORY_SIZE = 1073741824
5. 重启相关容器
修改所有配置后,必须重启Nginx和Django/uWSGI容器,确保配置生效:
- 使用Docker Compose:
docker-compose restart nginx django - 单个容器:
docker restart <nginx容器名>和docker restart <django容器名>
内容的提问来源于stack exchange,提问作者Nozhan
相关产品推荐
相关产品推荐

