You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 14:57:11