質問: お世話になっております。 現在、Dockerで WSGI <-> Webサーバ <-> Proxyサーバ <-> ユーザ のような環境を構築しています。 WebサーバとProxyサーバは共にnginxです。 WSGIの方でアップロード機能を実装したので、容量制限もしておきたいと考えたのですが、 WebサーバとProxyサーバのどちらに容量制限を置くべきでしょうか(もしくは両方?) 容量制限は以下のようにしています。 nginx.conf ``` http { client_max_body_size 22m; } ``` 私の方でも、 両方に置くパターン、片方にだけ置くパターン、それぞれ試してみた結果 Webサーバ側のnginxに置くだけでいいのかなという感じでしたが、 サーバ周りについての知識が乏しいので本当に大丈夫か不安なので質問させていただきました。 理由も添えて回答いただけるとありがたいです。 ついでにもう一点分かるようでしたらお答えいただけると助かります。 WSGI側にも容量制限を設けています。 それは、容量制限を超えるとWSGI側で用意したエラーページを表示させたい為なのですが、 その場合だとサーバ側の容量制限をある程度大きくしておいて、WSGIで本当に制限したい容量を設定する方法なのかなと思いましたが正しいでしょうか? 例えば サーバ側:100MBまで WSGI側:22MBまで というような感じです。 ただここで気になったのが、サーバ側の制限を大きくし過ぎてしまうと、一旦サーバを通過してWSGIにファイルが行くことになるので負荷が大きくなってしまうのかなという不安があります。 WSGIはFlaskを使っています。 そこらへんの処理がどのように行われているかもよく分かっていないので合わせてお答えいただけると嬉しいです。 よろしくお願いいたします。
回答: 自分が昔やったときも同様の方法を取りました。 考え方としては、WSGIのバックエンドプロセスが死なないサイズをHTTPサーバに設定し、サービスとして制限したい量をバックエンド側に設定するというのが良いと思います。 前者の修正にはサービスの機能変更という以上にインフラの設定変更という意味合いになってくるので、そのへんは分けておくと楽かなという意図です。