要仅对特定API关闭请求体转发,需在对应location块内设置proxy_pass_request_body off,如location = /healthz { proxy_pass http://backend; proxy_pass_request_body off; }。

如果只想对某几个 API 接口关闭请求体转发,proxy_pass_request_body off 必须放在对应的 location 块里,不能写在全局或 server 级别——否则会影响所有路径。
只对特定 location 关闭请求体
比如后端某个健康检查接口(如 /healthz)不需要传 body,但其他接口需要,可以这样写:
- 用精确匹配或前缀匹配定位该 API 路径
- 在该 location 内显式设置
proxy_pass_request_body off - 确保
proxy_pass指令也存在,否则配置不生效
示例:
⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**
proxy_pass http://backend;
proxy_pass_request_body off;
}
注意 URI 替换与 body 的关系
关闭 body 转发不会影响请求头或路径转发。但要注意:proxy_pass 后是否带 URI 会影响最终发送给后端的路径,这和 body 开关无关,但常被一起配置。例如:
-
proxy_pass http://backend/;会剥离 location 匹配部分 -
proxy_pass http://backend;会保留原始 URI 路径
建议搭配 proxy_set_header 显式传递 Host 和真实 IP,避免后端无法识别来源。
验证是否生效
可通过后端日志或抓包确认:当客户端 POST /healthz 并携带 body 时,后端不应收到任何请求体内容(如空 body 或 411 错误可能提示配置未生效)。也可在 Nginx 日志中添加 $request_body 变量临时调试(仅限开发环境,生产慎用)。

















