「413 Request Entity Too Large」というエラーメッセージを出さずに、大きなサイズのファイルを AWS Elastic Beanstalk 環境にアップロードしたいと考えています。
簡単な説明
デフォルトでは、NGINX のファイルアップロードは 1 MB に制限されています。リクエストのサイズが設定値を超えると、413 Request Entity Too Large というエラーが返されます。1 MB を超えるファイルをアップロードするには、NGINX 設定ファイルで client_max_body_size ディレクティブを設定します。
重要: M と MB は、「メガバイト」に相当する記号です。例えば、2 M は 2 MB に相当します。ただし、設定ファイルでは MB は無効であるため、M のみを使用してください。
解決方法
Amazon Linux 2 環境で client_max_body_size を設定するには、以下を実行します。
1. Elastic Beanstalk のデフォルトの NGINX 設定を拡張するには、以下を含む.conf 設定ファイル client_max_body_size.conf を追加します。
client_max_body_size 50M;
注: 前述の例では、client_max_body_size の値が 50M に更新されています。要件に応じて、50 の代わりに任意の値に置き換えてください。
2. .conf 設定ファイル client_max_body_size.conf をアプリケーションソースバンドルの .platform/nginx/conf.d/ という名前のフォルダーにコピーします。Elastic Beanstalk NGINX 設定では、このフォルダーに.conf ファイルが自動的に含まれます。ソースバンドルに存在しない場合は、必ずこのパスを作成してください。次の例では、アプリケーションの zip ファイル内の.platform ディレクトリと.conf ファイルの構造を示しています。
-- .ebextensions
-- other non nginx server config files
-- .platform
-- nginx
-- conf.d
-- client_max_body_size.conf
-- other application files
client_max_body_size.conf ファイルには、my-app/.platform/nginx/conf.d/client_max_body_size.conf のようなパスがあります。
3. コードと新しい .platform/ ディレクトリをともに、新しいアプリケーションバージョンとして Elastic Beanstalk 環境にデプロイします。
4. デプロイが完了したら、Elastic Beanstalk 環境で実行されているインスタンスにログインします。ログイン後、NGINX サーバーの設定が適用されていることを確認します。これを行うには、次のコマンドを使用します。
$ sudo nginx -T | egrep -i "client_max_body_size"
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
client_max_body_size 50M;