k8s Ingress 添加支持带有下划线的Header参数

在k8s环境中,一般前端代理都使用Ingress进行代理,开发调用传参的时候会遇到头部名称带下划线的需求,这种前端调用带下划线会被Ingress丢弃掉,这个问题估计很多人都遇到过。在Ingress官方文档中默认Enables underscores in header names. default: is disabled是为false的

如果我们需要Ingress支持前端传参带下划线的需求,需要在Ingress的configmap种开启并配置enable-underscores-in-headers参数

修改Ingress configmap

  1. <span>kind</span> <span>:</span> <span> </span> <span>ConfigMap</span>
  2. <span>apiVersion</span> <span>:</span> <span> v1</span>
  3. <span>metadata</span> <span>:</span>
  4. <span> name</span> <span>:</span> <span> abcdocker</span> <span>-</span> <span>nginx</span>
  5. <span> </span> <span>namespace</span> <span>:</span> <span> ingress</span>
  6. <span> annotations</span> <span>:</span>
  7. <span> control</span> <span>-</span> <span>plane</span> <span>.</span> <span>alpha</span> <span>.</span> <span>kubernetes</span> <span>.</span> <span>io</span> <span>/</span> <span>leader</span> <span>:</span> <span> </span> <span>>-</span>
  8. <span> </span> <span>{</span> <span>"holderIdentity"</span> <span>:</span> <span>"abcdocker-nginx-85679f444d-dqxh6"</span> <span>,</span> <span>"leaseDurationSeconds"</span> <span>:</span> <span>30</span> <span>,</span> <span>"acquireTime"</span> <span>:</span> <span>"2023-01-31T09:37:23Z"</span> <span>,</span> <span>"renewTime"</span> <span>:</span> <span>"2023-06-07T03:00:17Z"</span> <span>,</span> <span>"leaderTransitions"</span> <span>:</span> <span>24</span> <span>}</span>
  9. <span>data</span> <span>:</span>
  10. <span> enable</span> <span>-</span> <span>underscores</span> <span>-</span> <span>in</span> <span>-</span> <span>headers</span> <span>:</span> <span> </span> <span>'true'</span> <span> </span> <span>#此处添加</span>
  11. <span>#请不要直接复制,根据自己需求添加data标签复制</span>

如果是nginx 出现想支持下划线的header请求,需要在http标签下添加underscores_in_headers on;