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