You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置proxy-request-buffering off后丢失Content-Length头是否正常?能否恢复?

问题解答

这是预期行为吗?

是,这属于Nginx的正常行为。

当开启proxy-request-buffering时,Nginx会先完整缓存客户端的请求体,确认整个请求接收完成后再转发给后端服务——此时它能明确知晓请求体的总长度,因此会将客户端发送的Content-Length头原样传递给后端。

而关闭proxy-request-buffering: off后,Nginx会采用流式转发模式:一边接收客户端的请求体,一边实时转发给后端。这种情况下,Nginx在转发请求时还无法获取完整的请求体长度,所以不会传递Content-Length头,转而使用Transfer-Encoding: chunked标识分块传输的请求体。

能否获取原始的Content-Length头?

可以,通过自定义请求头的方式让Nginx把客户端发送的原始Content-Length值传递给后端。

你可以在Ingress资源中添加额外注解,插入Nginx配置片段,将原始的Content-Length值存入自定义请求头:

nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header X-Original-Content-Length $http_content_length;

之后后端服务就可以从X-Original-Content-Length这个自定义头中拿到客户端最初发送的Content-Length值了。


内容的提问来源于stack exchange,提问作者Nawa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:47:01