Django + Channels + Daphne + Caddy + Admin 文件上传 = 413 错误
Django + Channels + Daphne + Caddy + Admin File Upload = 413 Error
我有一个使用 Caddy 在生产环境中部署的 Django Web 应用程序。我使用 Caddy 作为指向 daphne 的反向代理,它指向我的 Django 应用程序。但是,当我尝试将一个 5MB 的文件上传到生产环境中的 django 管理门户时,出现 413 错误。在调试模式下,当我只使用 Django(没有 caddy 或 daphne)时,我没有收到此错误。有人有想法么?这是我的 Caddyfile 和相关文件:
0.0.0.0:2015
on startup daphne peptidedb.asgi:application &
header / {
-Server
# be sure to plan & test before enabling
# Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Referrer-Policy "same-origin"
X-XSS-Protection "1; mode=block"
X-Content-Type-Options "nosniff"
# customize for your app
#Content-Security-Policy "connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src data: 'self'; object-src 'self'; style-src 'self'; script-src 'self';"
X-Frame-Options "DENY"
}
proxy / localhost:8000 {
transparent
websocket
except /static
}
limits 750000000
log / stdout "{combined}"
errors stdout
asgi.py
import os
from channels.routing import get_default_application
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peptidedb.settings")
django.setup()
application = get_default_application()
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peptidedb.settings")
application = get_wsgi_application()
看起来当 Django 应用程序部署了通道、Daphne 和 caddy 时,此设置在 settings.py
中生效
DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 # value in bytes
我必须在我的设置文件中添加此设置,然后才能上传更大的文件。奇怪的是,当应用程序仅在调试模式下使用 Django 部署时,我不需要此设置。我想知道当 docker 容器内的 运行 时,我的应用程序是否无法(权限?大小?)将大文件 write/stream 写入磁盘,因为这是正常的 Django 行为(而不是写入内存)。
我有一个使用 Caddy 在生产环境中部署的 Django Web 应用程序。我使用 Caddy 作为指向 daphne 的反向代理,它指向我的 Django 应用程序。但是,当我尝试将一个 5MB 的文件上传到生产环境中的 django 管理门户时,出现 413 错误。在调试模式下,当我只使用 Django(没有 caddy 或 daphne)时,我没有收到此错误。有人有想法么?这是我的 Caddyfile 和相关文件:
0.0.0.0:2015
on startup daphne peptidedb.asgi:application &
header / {
-Server
# be sure to plan & test before enabling
# Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Referrer-Policy "same-origin"
X-XSS-Protection "1; mode=block"
X-Content-Type-Options "nosniff"
# customize for your app
#Content-Security-Policy "connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src data: 'self'; object-src 'self'; style-src 'self'; script-src 'self';"
X-Frame-Options "DENY"
}
proxy / localhost:8000 {
transparent
websocket
except /static
}
limits 750000000
log / stdout "{combined}"
errors stdout
asgi.py
import os
from channels.routing import get_default_application
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peptidedb.settings")
django.setup()
application = get_default_application()
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "peptidedb.settings")
application = get_wsgi_application()
看起来当 Django 应用程序部署了通道、Daphne 和 caddy 时,此设置在 settings.py
中生效DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 # value in bytes
我必须在我的设置文件中添加此设置,然后才能上传更大的文件。奇怪的是,当应用程序仅在调试模式下使用 Django 部署时,我不需要此设置。我想知道当 docker 容器内的 运行 时,我的应用程序是否无法(权限?大小?)将大文件 write/stream 写入磁盘,因为这是正常的 Django 行为(而不是写入内存)。