Nginx+Docker+Django环境下413请求实体过大问题求助
解决Nginx 413 Request Entity Too Large错误的正确配置方式
你遇到的413错误是因为Nginx默认限制了请求体大小(默认约1MB),添加client_max_body_size配置即可解决。你之前添加时报错,大概率是配置位置不对或者语法有误,以下是正确的配置示例:
修改后的nginx default.conf
upstream django { server store:27038; } server { listen 27036; # 直接添加在server块的listen指令下方即可 client_max_body_size 100M; location /static { alias /vol/static; } location / { proxy_pass http://django; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } }
常见报错原因及其他配置方式
- 语法错误:确保配置末尾加了分号
;,这是Nginx配置的必要语法规范 - 全局生效配置:如果想让所有服务都生效,可以在Nginx主配置文件(通常是
/etc/nginx/nginx.conf)的http块中添加client_max_body_size 100M;,不过针对单个server配置更灵活
Docker环境下的生效步骤
因为你的Nginx配置是通过Dockerfile COPY进去的,修改配置后需要重新构建镜像并启动容器:
# 如果用docker-compose docker-compose up -d --build nginx # 如果是单独容器 docker stop <your-nginx-container-name> docker build -t your-nginx-image . docker run -d --name your-nginx-container your-nginx-image
额外检查点
如果修改Nginx后仍然报错,需要检查后端Django的上传限制:
- 在Django的
settings.py中设置:# 限制内存中处理的文件大小,超过则写入临时文件 FILE_UPLOAD_MAX_MEMORY_SIZE = 104857600 # 100MB # 最大上传文件大小 MAX_UPLOAD_SIZE = 104857600
内容的提问来源于stack exchange,提问作者Monk
相关产品推荐
相关产品推荐

