テクノロジー · 実用ガイド

NGINX を変えても 413?body 制限を実施する hop を先に証明する

すべての proxy を拡大したり無制限にしたりしません。同じ marked request で最初の拒否 hop を特定し、その層の実効設定を取得し、一つの有限 scope だけを変えて境界両側を検証します。

HTTP 413 hop ownership 図
オリジナルイラスト:marked request を最初に拒否する層を特定。 Watch at Ease

すべての proxy を拡大したり無制限にしたりしません。同じ marked request で最初の拒否 hop を特定し、その層の実効設定を取得し、一つの有限 scope だけを変えて境界両側を検証します。

HTTP 413 は request path の任意 server/proxy から返り得ます。 NGINX client_max_body_size の default は 1m で http、server、location に置けます。

1. 再現 request を固定

目標 limit 前後の正確な byte 数の無害な body を作り、同じ method、auth、content type と一意な request ID で正確な route へ送ります。status、headers、response prefix、時刻、client trace を保存し、browser 表示だけで owner を決めません。

2. 最初の拒否 hop を特定

response headers、TLS endpoint、server signature、request ID を各 hop の access/error log と照合します。最初に 413 を生成した層が拒否 owner です。app に同じ request がなければ body は未到達です。

3. 実効 policy を証明

standalone NGINX は実 instance で nginx -T を取り URI を支配する http、server、location を特定します。ingress-nginx は Ingress、annotation、controller version、ConfigMap、generated block を保存し edge と app の cap を分けます。

4. 一つの有限層を変更

memory、buffer、timeout、scanner、storage が支えられる有限値を選び、最初の拒否層の対象 scope だけ変更します。security review なしに 0 にしません。syntax と新 worker、Pod、generation を保存します。

5. 境界両側を試験

同じ request で limit 直下、可能なら同値、直上を試します。小さい body は app まで到達し、大きい body は想定層で拒否される必要があります。bytes、route、config hash、logs、結果、rollback と小 request health を残します。

HTTP body limit 境界試験
オリジナルイラスト:有限な一層を変えて境界両側を証明。 Watch at Ease