Django 服务器上的 413 负载太大
413 Payload Too Large on Django server
每当我们尝试将大文件上传到 Django 后端时,我的团队都会遇到 413 错误:413 Payload too large
我们无法准确确定可接受的最大文件大小 - 它似乎在 1-3MB 范围内摇摆不定。
我们排除的东西:
这不是网络服务器配置问题,因为我们 运行
本地 Django 服务器(没有网络服务器)
我们认为这不是应用服务器配置问题,因为这发生在多个应用服务器上(./manage.py runserver
和
daphne -p 8000 topknott.asgi:application
)
Django模型上的字段不是问题,看起来
正常:photo = models.ImageField(blank=True)
谁能看出我们遗漏了什么?
据我所知,runserver 或 daphne 永远不会 return 413。看起来你在 python 服务器前面安装了 NGINX。
您可以在 nginx.conf
的服务器块中使用 client_max_body_size 更改限制
server {
client_max_body_size 20M;
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
Django 有一个内置机制来防止任何可疑 activity。
在您的 settings.py 文件中设置变量
DATA_UPLOAD_MAX_MEMORY_SIZE = 10*1024*1024 # your size limit in bytes
查看文档:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-DATA_UPLOAD_MAX_MEMORY_SIZE
但是,如果您的团队 was/is 使用 Django Channels, there was a piece of code introduced in 2.1.7
causing an unintended 413 error (discussed here). This was fixed in 2.3.0
。
每当我们尝试将大文件上传到 Django 后端时,我的团队都会遇到 413 错误:413 Payload too large
我们无法准确确定可接受的最大文件大小 - 它似乎在 1-3MB 范围内摇摆不定。
我们排除的东西:
这不是网络服务器配置问题,因为我们 运行
本地 Django 服务器(没有网络服务器)我们认为这不是应用服务器配置问题,因为这发生在多个应用服务器上(
./manage.py runserver
和daphne -p 8000 topknott.asgi:application
)Django模型上的字段不是问题,看起来 正常:
photo = models.ImageField(blank=True)
谁能看出我们遗漏了什么?
据我所知,runserver 或 daphne 永远不会 return 413。看起来你在 python 服务器前面安装了 NGINX。
您可以在 nginx.conf
的服务器块中使用 client_max_body_size 更改限制 server {
client_max_body_size 20M;
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000/;
}
}
Django 有一个内置机制来防止任何可疑 activity。
在您的 settings.py 文件中设置变量
DATA_UPLOAD_MAX_MEMORY_SIZE = 10*1024*1024 # your size limit in bytes
查看文档:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-DATA_UPLOAD_MAX_MEMORY_SIZE
但是,如果您的团队 was/is 使用 Django Channels, there was a piece of code introduced in 2.1.7
causing an unintended 413 error (discussed here). This was fixed in 2.3.0
。