Watch at Ease看见世界,读懂生活。

科技 · 实用指南

NGINX 改了仍返回 413?先证明哪一跳在限制请求体

不要把每层代理都调大,更不要直接设为无限。用同一个带标记请求定位最先拒绝的跳点,导出该层实际生效配置,只改一个有限范围,再验证阈值上下两侧。

HTTP 413 跳点归属图
原创插画:找出最先拒绝带标记请求的层。 Watch at Ease

不要把每层代理都调大,更不要直接设为无限。用同一个带标记请求定位最先拒绝的跳点,导出该层实际生效配置,只改一个有限范围,再验证阈值上下两侧。

HTTP 413 可能来自请求链路中的任意服务器或代理。 NGINX client_max_body_size 默认 1m,可位于 http、server、location。

1. 冻结一个可复现请求

生成围绕目标上限、字节数已记录的无敏感测试体,以相同方法、鉴权和内容类型发送到准确路由,并加入唯一请求 ID。保存状态、响应头、响应前缀、时间和客户端跟踪;不能用浏览器文案判断责任层。

2. 定位最先拒绝的跳点

把响应头、TLS 终点、服务器特征和请求 ID 与每一跳的访问及错误日志对齐。最先生成 413 的层才是拒绝者;应用没有相同请求记录,说明请求体没有到达。日志不足时只在受控边界加入不含秘密的关联字段。

3. 证明实际生效策略

独立 NGINX 要从运行实例执行 nginx -T,查找控制该 URI 的 http、server、location 值。ingress-nginx 要保存 Ingress、注解、控制器版本、ConfigMap 与生成的 host/path 配置;边缘和应用上限分别核查。

4. 只改一个有限层

选择内存、缓冲、超时、扫描和存储都能承受的有限值,只改最先拒绝的层和目标范围。未经安全评审不要设为 0。验证语法,并保存新 worker、Pod 或配置代次;若无效就回到责任归属。

5. 验证阈值两侧

用同一标记请求测试略低于上限、语义允许时等于上限、以及略高于上限的精确字节体。较小请求必须到达应用,较大请求应由预期层拒绝。记录字节、路由、配置哈希、日志、结果、回滚和小请求健康。

HTTP 请求体上限边界测试
原创插画:只改一个有限层并验证阈值两侧。 Watch at Ease