練習用のWebサービス(クライアントのアートブック表示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サーバーはHTTPSサーバーへの301リダイレクトに設定されています... 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 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