我正在研究kubernetes集群,面临的问题是:
从UI /浏览器中,我可以看到它正在发送一个名为“ request_id ”的请求标头,请参考图片:
但是在后端检查时不可用。通过互联网搜索时,我可以看到人们正在谈论将以下条目添加到 Ingress 对象:
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header request_id "$req_id";
但是它正在为此生成一个新值,而不传递浏览器提交的值。
任何想法,这里可能缺少什么?
答案 0 :(得分:2)
如果要将自定义标头传递到后端,则需要使用这种注释:
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "Request-Id: $request_id
在您的配置中,您正在使用变量$ req_id,但是您需要传递UI /浏览器发送的变量。
答案 1 :(得分:0)
基本上,ingress-nginx控制器删除其中包含“ _” 的所有请求标头。您可以找到讨论此问题的各种主题,例如
Why HTTP servers forbid underscores in HTTP header names
因此,我刚刚启用了入口控制器来传递此类请求标头。这可以通过在configmap“ nginx-configuration ”
中添加以下条目来完成Validation Error
IMO,这是一个非常干净的解决方案,因为可能会有许多应用程序在请求标头中使用“ _”。