413 请求实体太大 nginx django
413 Request Entity Too Large nginx django
我在做一个练习web服务(客户端的画册展示网站)客户端可以上传画册图片到服务器。
但是当客户端上传太多图片时,我得到以下错误
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
有人可以帮忙吗?
您已经解决了 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
Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location
Sets the maximum allowed size of the client request body, specified in
the “Content-Length” request header field. If the size in a request
exceeds the configured value, the 413 (Request Entity Too Large) error
is returned to the client. Please be aware that browsers cannot
correctly display this error. Setting size to 0 disables checking of
client request body size.
在此处阅读有关配置 HTTPS 服务器的更多信息:http://nginx.org/en/docs/http/configuring_https_servers.html
打开 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 ...
}
我在做一个练习web服务(客户端的画册展示网站)客户端可以上传画册图片到服务器。
但是当客户端上传太多图片时,我得到以下错误
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
有人可以帮忙吗?
您已经解决了 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
Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location
Sets the maximum allowed size of the client request body, specified in the “Content-Length” request header field. If the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is returned to the client. Please be aware that browsers cannot correctly display this error. Setting size to 0 disables checking of client request body size.
在此处阅读有关配置 HTTPS 服务器的更多信息:http://nginx.org/en/docs/http/configuring_https_servers.html
打开 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 ...
}