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

Docker环境部署的Django搭配Nginx上传多文件返回400错误如何解决

排查修复步骤

  • 先把Nginx日志打开,没有日志根本没法精准定位问题,在你Nginx配置的server块里加两行:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log debug;

改完重启Nginx容器,重新触发上传报错,执行docker logs 你的Nginx容器名就能拿到具体报错日志,根据报错直接针对性修复即可。

  • 先给你几个从现有配置能看出来的高发问题,你可以先逐一验证:
    1. 请求头限制导致400:多文件上传的form-data请求头会带较长的边界字段,Nginx默认的请求头缓冲区不足,且默认关闭下划线开头的请求头解析,很容易直接返回400,在server块加以下配置即可:
    underscores_in_headers on;
    large_client_header_buffers 4 16k;
    
    1. 代理路径转发错误:你现在/api/ location块的proxy_pass http://api没有加末尾斜杠,会把/api/xxx完整路径直接转发给后端,如果你Django接口没有/api前缀就会直接报错,改成proxy_pass http://api/;(注意末尾多一个斜杠),转发的时候会自动去掉/api前缀。
    2. upstream配置错误:你upstream里写的是公网域名neworleansenglishcourse.com.br:8000,但你的后端服务是同Docker网络下名为backend的容器,直接把upstream改成server backend:8000即可,不用走公网解析,避免Docker内部域名解析异常。
    3. Gunicorn限制导致400:你用的Gunicorn默认有请求头、请求体大小限制,多文件上传很容易触线,修改后端启动命令:
    command: gunicorn plataformaingles.wsgi --bind 0.0.0.0:8000 --limit-request-line 0 --limit-request-field_size 0 --limit-request-fields 1000
    
    同时在Django的settings.py里加上配置,对齐你Nginx的上传大小限制:
    DATA_UPLOAD_MAX_MEMORY_SIZE = 8 * 1024 * 1024 * 1024
    FILE_UPLOAD_MAX_MEMORY_SIZE = 8 * 1024 * 1024 * 1024
    

内容的提问来源于stack exchange,提问作者italoooliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:48:02