413 请求实体太大 nginx django
Posted
技术标签:
【中文标题】413 请求实体太大 nginx django【英文标题】:413 Request Entity Too Large nginx django 【发布时间】:2016-08-27 22:47:11 【问题描述】:我正在做一个练习网络服务(客户端的画册展示网站)客户端可以上传画册图片到服务器。
但是当客户端上传太多图片时出现以下错误
413 Request Entity Too Large
我尝试在 nginx.conf 中添加client_max_body_size 100M;
#user nobody;
#Defines which Linux system user will own and run the Nginx server
worker_processes 1;
#error_log logs/error.log; #error_log logs/error.log notice;
#Specifies the file where server logs.
#pid logs/nginx.pid;
#nginx will write its master process ID(PID).
events
worker_connections 1024;
http
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
server
listen 80;
server_name xxxx.net;
client_max_body_size 100M;
keepalive_timeout 5;
return 301 https://$server_name$request_uri;
# HTTPS server
#
server
listen 443 default_server ssl;
server_name xxx.net;
ssl_certificate /etc/letsencrypt/live/xxxx.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxxx.net/privkey.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
location /
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
并尝试过:
sudo service nginx restart
sudo service nginx reload
然后重试
runserver
但仍然得到
413 Request Entity Too Large
有人可以帮忙吗?
【问题讨论】:
nginx 是独立运行还是代理其他平台(php、Python 等)? 另外,您已将client_max_body_size
添加到您的 HTTP 服务器块,但未添加到 HTTPS 服务器块。这可能就是问题所在。
我解决了我的问题,HTTPS 必须有 client_max_body_size 谢谢@solarissmoke
【参考方案1】:
您已经解决了 HTTP 服务器上的问题,但是您的 HTTP 服务器设置为 301 重定向到您的 HTTPS 服务器...您的 HTTPS 服务器没有配置 client_max_body_size
,因此它默认为 1M 并导致此问题413(请求实体太大)错误。
要解决此问题,您只需将client_max_body_size
添加到BOTH HTTP 服务器块和 HTTPS 服务器块,如如下例所示:
http
...
######################
# HTTP server
######################
server
...
listen 80;
server_name xxxx.net;
client_max_body_size 100M;
...
######################
# HTTPS server
######################
server
...
listen 443 default_server ssl;
server_name xxxx.net;
client_max_body_size 100M;
...
更多关于client_max_body_size
的信息在这里:http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
语法:client_max_body_size 大小;
默认:client_max_body_size 1m;
上下文:http、服务器、位置
设置客户端请求正文的最大允许大小,在 “Content-Length”请求头字段。如果请求中的大小 超过配置值,出现 413 (Request Entity Too Large) 错误 被退回给客户。请注意,浏览器不能 正确显示此错误。将大小设置为 0 禁用检查 客户端请求正文大小。
在此处阅读有关配置 HTTPS 服务器的更多信息:http://nginx.org/en/docs/http/configuring_https_servers.html
【讨论】:
【参考方案2】:打开 Ubuntu 终端
使用 nano 文本编辑器:
$
sudo nano /etc/nginx/nginx.conf
将客户端主体大小设置为 100M
client_max_body_size 100M;
喜欢:
http
##
# Basic Settings
##
client_max_body_size 100M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
## More codes here ...
【讨论】:
以上是关于413 请求实体太大 nginx django的主要内容,如果未能解决你的问题,请参考以下文章
413 请求实体在 Nginx 和 Amazon ElasticBeanstalk 中太大
nginx 413 请求实体在上传时太大[加载超过 1Mb 的文件