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

无法通过$http_content_length读取Content-Length请求头的问题

Nginx传递Content-Length请求头到后端的问题解决

你遇到的问题源于Nginx$http_content_length变量的特殊行为:当请求采用分块编码(Transfer-Encoding: chunked),或者Nginx默认开启的请求体缓冲(proxy_request_buffering on)生效时,这个变量会被清空,导致你配置的X-Content-Length-2头无法被后端接收;而$http_content_type不存在这类场景限制,因此能正常传递。

解决方法有两种:

  • 改用$content_length变量:该变量直接对应请求的Content-Length值,无论Nginx是否处理请求体,只要客户端发送了这个头就能正确获取。修改后的配置如下:
    proxy_set_header X-Content-Length-2 $content_length;
    
  • 若必须保留$http_content_length的逻辑,可关闭请求体缓冲(不推荐,可能影响服务性能):
    proxy_request_buffering off;
    proxy_set_header X-Content-Length-2 $http_content_length;
    

需要注意:如果客户端未发送Content-Length头(比如分块传输的请求),无论使用哪个变量,X-Content-Length-2头都不会被生成,这符合HTTP规范。

内容的提问来源于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 13:17:03