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

升级ingress-nginx-controller与kubewebhook后出现重复Transfer-Encoding头错误

解决方案:上游返回重复Transfer-Encoding头导致ingress-nginx报错

问题原因

新版本ingress-nginx(v1.11+)对响应头的校验更严格,当上游服务(后端或kubewebhook)返回重复的Transfer-Encoding: chunked头时,会直接触发错误拦截;而旧版本v1.9.4会忽略这类重复头,因此升级后问题显现。

排查与解决步骤

1. 确认重复头的来源

直接调用上游服务的搜索接口,检查响应头是否存在重复:

curl -v https://<你的后端服务地址>/search

查看输出中的Response Headers部分,确认是否出现两次Transfer-Encoding: chunked。

  • 如果是后端服务直接返回重复头,需修复后端代码逻辑;
  • 如果是kubewebhook转发时添加了重复头,需检查kubewebhook的版本变更(v20231011 → v20231226),定位是否是新版本的逻辑bug导致重复添加头。

2. 临时绕过(不推荐长期使用)

若需快速恢复服务,可配置ingress-nginx忽略重复的Transfer-Encoding头:

  • 单ingress生效:在对应Ingress资源的annotations中添加:
    annotations:
      nginx.ingress.kubernetes.io/proxy-ignore-headers: "Transfer-Encoding"
    
  • 全局生效:修改ingress-nginx的ConfigMap,添加:
    data:
      proxy-ignore-headers: "Transfer-Encoding"
    

3. 修复上游服务(根本解决)

  • 后端服务:修改代码,确保响应只发送一次Transfer-Encoding: chunked头;
  • kubewebhook:回退到之前的稳定版本(v20231011-8b53cabe0),或针对新版本的头处理逻辑进行修复。

4. 检查ingress-nginx配置变更

对比v1.9.4与v1.11+/v1.12.x的配置差异,重点关注proxy_merge_headers参数:

  • 若该参数默认值从on改为off,nginx会拒绝合并重复头,此时可在ConfigMap中设置:
    data:
      proxy-merge-headers: "on"
    
    注意:开启该参数可能会导致其他重复头被合并,需评估业务影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:52:05