Django网站部署后上传头像遇413及500服务器错误求助
解决Django+Nginx上传头像时的413/500错误
问题诊断
从日志能明确两个核心问题:
- Nginx配置语法错误:
invalid number of arguments in "client_max_body_size" directive,说明你添加的client_max_body_size格式不规范,导致Nginx无法正常启动,直接引发500错误 - 后续仍出现
client intended to send too large body,证明上传大小限制的配置未真正生效
分步解决方案
1. 修复Nginx配置错误
打开Nginx主配置文件:
nano /etc/nginx/nginx.conf
定位到http块中的client_max_body_size配置,严格检查以下细节:
- 数值与单位之间必须是英文空格,禁止使用中文空格
- 单位用大写
M代表兆字节,不能用小写或其他符号 - 配置行末尾必须加英文分号
;
正确配置示例:
http { # 其他原有配置... client_max_body_size 100M; # 其他原有配置... }
修改后先验证配置合法性,避免直接重启失败:
nginx -t
如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,再重启Nginx服务:
systemctl restart nginx
2. 调整Django的上传限制
即使Nginx放开了大小限制,Django本身也有默认上传阈值,需在项目的settings.py中添加或修改以下配置:
# 允许在内存中处理的最大上传文件大小(超过则写入临时文件) FILE_UPLOAD_MAX_MEMORY_SIZE = 104857600 # 100MB # 允许的POST请求数据最大大小 DATA_UPLOAD_MAX_MEMORY_SIZE = 104857600 # 100MB
3. 重启相关服务
完成配置后,重启Django应用对应的服务(比如uWSGI或Gunicorn):
# 以Gunicorn为例 systemctl restart gunicorn
额外排查点
- 若仍出现500错误,查看Django的日志文件(通常在
/var/log/django/或项目根目录的logs文件夹),定位具体异常,比如文件存储路径权限不足、临时目录不存在等问题 - 检查Nginx的站点配置文件(如
/etc/nginx/sites-available/your-site),确认是否在server或location块中单独设置了client_max_body_size,该局部配置会覆盖http块的全局设置
内容的提问来源于stack exchange,提问作者Something Else
相关产品推荐
相关产品推荐

