Docker Nginx 413 Request Entity Too Large エラー
ファイルアップロード時エラー
ファイルアップロード機能を実装し、PCでテストした時点では問題なし「容量が小さいサイズ(1MB以内)しかこの時はテストしていなかった」
スマホで撮影したデータをアップロードした時、Nginx「413 Request Entity Too Large」エラーが発生。
「あっ!容量オーバーか」・・・急ぎで修正の必要はなかったのでとりあえず寝る。。。

Nginxのデフォルトアップロードサイズ
http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

情報をみると、デフォルトが1MBという事。確かにスマホから送ったサイズは1MB以上だった。”0” を指定すれば制限はなくなる。
当サイトの構成
まずは当サイトの構成に関して。
詳細は以下で記載しています。

上記構成図を見て、すぐに「ココ」と気づいた方も多いかと。しばしお付き合いを。
試した事1
リバースプロキシ(Nginx)のDockerログを確認
エラーは出力していない。。。?
試した事2
リバースプロキシ(Nginx)の設定ファイル「default.conf」に以下を追加
client_max_body_size 0;
結果:変わらずエラー(確認後、上記記載は一旦削除)
試した事3
リバースプロキシ(Nginx)の設定ファイル「default.conf」に以下を追加
このリバースプロキシでエラーとなっているか確認する為。
--追加前--
error_page 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
--追加後--
error_page 413 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
結果:変わらずエラー
試した事4
HTTPS用(Nginx)の「docker-compose.yml」に以下を追加
environment:
STAGE: production
CLIENT_MAX_BODY_SIZE: 0 ← 追加
結果:エラーが少し変わった
2行目の「nginx」から「nginx/1.23.3」に変わった
HTTPS用のNginxは通過し、リバースプロキシ側のNginxで引っかかっている

試した事5
「試した事2」を再度設定
リバースプロキシ(Nginx)の設定ファイル「default.conf」に以下を追加
client_max_body_size 0;
結果:無事容量が大きいファイルもアップロードできるようになった。
最後に
DockerでNginxを【複数】使用して構築している方は ”ははまりやすい” 事案かと。
当サイトでは環境部分は制限なしで、アプリ側で容量制限を実施予定です。
いい勉強になりました。😆



