Nginx代理上传文件报413错误,配置client_max_body_size无效,需调uWSGI吗?
解决Nginx代理Django+uWSGI上传图片报413 Request Entity Too Large的问题
已经调整Nginx的client_max_body_size但问题仍存在,确实需要检查并调整uWSGI的配置,同时还要排查其他潜在环节:
调整uWSGI的请求体大小限制
uWSGI默认对请求体大小有严格限制(通常为1MB),即便Nginx允许大文件上传,uWSGI仍会拦截超出限制的请求。需在uWSGI配置文件(如uwsgi.ini)中添加或修改参数:limit-post = 1073741824 # 对应1024MB,单位为字节或通过启动命令指定:
uwsgi --limit-post 1073741824 [其他启动参数]检查Django自身的上传限制
Django也有文件上传大小的默认限制,需确保settings.py中相关参数配置合理:# 单个上传文件的最大字节数(1024MB) FILE_UPLOAD_MAX_MEMORY_SIZE = 1073741824 # 所有上传文件的总字节数限制 DATA_UPLOAD_MAX_MEMORY_SIZE = 1073741824 # 可选:设置临时文件存储路径,用于存放超出内存阈值的上传文件 FILE_UPLOAD_TEMP_DIR = '/tmp'确认Docker容器已重启
由于你采用Docker部署,修改Nginx、uWSGI或Django配置后,必须重启对应容器才能让配置生效:# 重启Nginx容器 docker restart [你的Nginx容器名称] # 重启Django+uWSGI容器 docker restart [你的Django容器名称]排查是否存在其他代理层限制
如果部署架构中还有额外的反向代理(如CDN、负载均衡器),这些服务也可能设置了请求体大小限制,需对应调整其配置。
内容的提问来源于stack exchange,提问作者B Syal
相关产品推荐
相关产品推荐

