目的
- NginxにてファイルをPostした時に発生する「413 Request Entity Too Large」を解決しようとして
/etc/nginx/conf.d/XXX.conf
のファイルをいじって色々やったけどパッと解決できなかったのでまとめる。
症状
- 下記の記事の様にNginxのXXX.confファイルをいじってNginxを再起動しても「413 Request Entity Too Large」のエラーが解消しない。
やりたいこと
- 細かいことはいいからとにかく「413 Request Entity Too Large」を解消してスッキリしたい。
- そのためにNginxの全体の設定としてファイルアップロードのサイズ制限を無効にする。(とにかくガバガバ設定で413解消したい)
解決方法
-
/etc/nginx/nginx.conf
のkeepalive_timeout 65;
の下の行くらいに下記の内容を記載する。/etc/nginx/nginx.conflient_max_body_size 0;
-
下記コマンドを実行してNginxを再起動する。
# nginx -s reload
-
100MBのファイルをPostしたら送る事ができた。
原因
- 自分が必死に編集していた
/etc/nginx/conf.d
直下のdefaunt.confが自分が開発しているサービスのドメイン(サーバー)の設定ファイルではなかった。
まとめ
- nginx.confは起動しているNginx全体の設定であり、「親」の設定になる。
/etc/nginx/conf.d
直下のXXX.confはそれぞれのドメインごとの設定であるらしい。 - だから今回の解決策は起動しているNginxのすべてのドメイン(サーバー)のファイルアップロード上限を無制限に設定しているため非常によろしくない。
- そもそも無制限にファイルアップロードできる状態があまりセキュリティ上よろしくない(すごい大きいファイルとかアップロードできちゃう)
- 誰かがこのサーバーで新たに新規ドメイン(サーバー)を追加した場合意図せず「ファイルアップロード上限なし」設定が反映されてしまう。
- なので、明確な理由が合って全体的に設定を変更するためにnginx.confに記載して反映するならいいが「とりあえず動いたから、、、」でnginx.confに記載するのは良くないと思う。
あとがき
- Docker内でviが使えなかったので下記記事を参考にvimをインストールしてnginx.confを修正した。(
$apt-get update
と$ apt-get install vim
でvim取得)
自分用メモ
- 一回
/etc/nginx/nginx.conf
にlient_max_body_size 0;
を記載して# service nginx reload
を実行して設定を行ったあとからは/etc/nginx/conf.d/default.conf
にlient_max_body_size 0;
を記載して/etc/nginx/nginx.conf
のlient_max_body_size 0;
を削除して# service nginx reload
しても正常に動くようになった。(なんで/etc/nginx/conf.d/default.conf
に初っ端記載してNginxリロードしても問題は解決しなかったんだろうか、、)