【问题标题】:Error: client intended to send too large body错误:客户端打算发送太大的正文
【发布时间】:2015-08-09 10:29:42
【问题描述】:

我正在使用 django-resto 将我的媒体文件上传到远程服务器。但是,当我尝试上传时,它给了我django_resto.storage: Failed on create

并在消息下方生成日志,

open() "/var/www/media/media/events/video/clipcanvas_14348_H264_640x360.mp4"
failed (2: No such file or directory),
    client: 172.17.42.1,
    server: ,
    request: "HEAD /media/events/video/clipcanvas.mp4 HTTP/1.1",
    host: "IP:8081"

client intended to send too large body:
    body: 2139606 bytes,
    client: *.*.*.*,
    server: ,
    request: "PUT /media/events/video/clipcanvas.mp4 HTTP/1.1",
    host: "IP:8081"

谁能解释我为什么会收到这样的错误?

媒体服务器设置,

DEFAULT_FILE_STORAGE = 'django_resto.storage.DistributedStorage'
RESTO_MEDIA_HOSTS = ['IP:8081']

Nginx 配置,

server { 
    listen 192.168.0.10; 
    location / { 
        root /var/www/media; 
        dav_methods PUT DELETE; 
        create_full_put_path on; 
        dav_access user:rw group:r all:r; 
        allow 192.168.0.1/24; deny all;
    } 
}

【问题讨论】:

  • 你使用的是 nginx 还是 Apache?

标签: django python-3.x file-upload server


【解决方案1】:

这个问题是由 nginx 的低默认 client_max_body_size 值 (1MB) 引起的。

您需要在以下上下文块之一中将client_max_body_size <value> 设置为更高的值:

  • http
  • 位置
  • 服务器

代码将是这样的:

server {
    # set the max body size across the site to be 20mb
    client_max_body_size 20m;
}

我个人会将client_max_body_size 放在location 块上。这意味着您的新最大正文尺寸不会全局设置,而是针对您网站的特定子位置设置。

server {
    # site default is 1mb
    client_max_body_size 1m;


    location /user/profiles/upload {
        # profile images should be no more than 2m
        client_max_body_size 5m;
        # the rest of your website will still use 1m max body size
    }
}

注意:请记住,您需要在更改生效之前重新加载配置文件。

另请注意:您只需将client_max_body_size 设为您需要的值加上一点点。阻止人们发送大量文件以试图削弱您的服务器。

【讨论】:

  • 谢谢马特,但这不是我的问题。我已经把 24m 作为身体尺寸。我的问题解决了,server { listen 192.168.0.10; location / { root /var/www/media; dav_methods PUT DELETE; create_full_put_path on; dav_access user:rw group:r all:r; allow 192.168.0.1/24; deny all; } }

    server { listen 192.168.0.10; location / { root /var/www/media; dav_methods PUT DELETE; create_full_put_path on; dav_access group:rw all:r; allow 192.168.0.1/24; deny all; } }
  • 我可以建议您将此作为编辑添加到问题中吗?
猜你喜欢
  • 2017-11-28
  • 2021-04-20
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多