请求经Kong转发到后端API时iv-user header值为null的问题咨询
问题根因说明
你遇到的是Kong转发阶段header丢失的典型场景,常见原因有以下4种:
- 认证插件覆盖逻辑冲突
如果你在对应路由/服务上启用了JWT、OIDC、LDAP认证等插件,且插件配置了client_id_header/userinfo_header等参数为iv-user,当插件认证逻辑中未匹配到对应用户信息时,会主动覆盖你请求中携带的iv-user值为null。而Kong日志采集发生在插件执行前,所以日志中能看到原始携带的有效值。 - 请求头转换插件误操作
若全局/路由/服务维度配置了request-transformer插件,且在remove.headers列表中包含iv-user,或是配置了add.headers/replace.headers规则把iv-user设为空值,也会导致转发到上游的header值为空。 - 自定义header白名单限制
如果你修改过Kong的headers配置项,设置了仅允许指定header转发到上游,iv-user不在白名单内也会被过滤。 - 上游服务过滤逻辑拦截
Kong转发的header本身是正常的,但上游服务前面部署的WAF、反向代理、服务网格sidecar等组件配置了header白名单,iv-user不在白名单内被过滤,最终到业务接口时变成null。
排查验证步骤
- 先在Kong节点上执行tcpdump抓包,确认Kong转发给上游的请求中是否携带
iv-userheader,命令参考:tcpdump -i any -s 0 -A host [上游服务IP] and port [上游服务端口] | grep "iv-user"
如果抓包能看到有效值,说明问题出在上游链路,反之说明问题在Kong侧配置。 - 检查对应路由、服务以及全局维度的插件配置,确认是否有认证类插件、请求转换类插件操作
iv-user字段,插件配置可以通过Kong Admin API查询:curl http://[Kong Admin地址]/services/[服务名]/pluginscurl http://[Kong Admin地址]/routes/[路由ID]/plugins - 若确认是Kong侧丢失header,且没有插件操作该字段,可以调整Nginx核心配置放宽header校验规则,在Kong配置文件中添加以下参数:
nginx_http_underscores_in_headers: on nginx_http_ignore_invalid_headers: off
配置修改后重启Kong即可生效。
内容的提问来源于stack exchange,提问作者Kalyan Prasad
相关产品推荐
相关产品推荐

