首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ConfigMap将标头添加到NGINX宏中

使用ConfigMap将标头添加到NGINX宏中
EN

Stack Overflow用户
提问于 2021-10-13 13:37:39
回答 2查看 2.2K关注 0票数 2

我正在尝试使用Azure上的Kubernetes通过我的NGINX入侵传递我的客户IP地址

我为NGINX配置创建了这个configmap以添加标题:

代码语言:javascript
复制
apiVersion: v1
data:
  X-Real-IP: $remote_addr;
  X-Forwarded-For: $proxy_add_x_forwarded_for;
  X-Forwarded-Proto: $proxy_x_forwarded_proto;
  use-forwarded-headers: "true"
  use-proxy-protocol: "true"
  real-ip-header: "proxy_protocol"
kind: ConfigMap
metadata:
  name: custom-headers
  namespace: default

然后添加此配置以引用上一个文件:

代码语言:javascript
复制
apiVersion: v1
data:
  proxy-set-headers: "custom-headers"
  externalTrafficPolicy: Local
kind: ConfigMap
metadata:
  name: ingress-nginx-controller
  namespace: default
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

如果我描述我的nginx控制器:

代码语言:javascript
复制
kubectl describe deploy ingress-nginx-controller

我能看到台词:

代码语言:javascript
复制
--configmap=$(POD_NAMESPACE)/ingress-nginx-controller

如果我描述入口-nginx-控制器的configmap

代码语言:javascript
复制
kubectl describe configmap ingress-nginx-controller

我可以在数据部分看到以下内容:

代码语言:javascript
复制
proxy-set-headers:
----
custom-headers

但是,如果我在控制器中注销了nginx.conf文件,则无法看到更改的值。例如,这仍然是默认的:

代码语言:javascript
复制
proxy_set_header X-Forwarded-For        $remote_addr;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-15 10:21:46

您缺少代理集标头值的命名空间前缀。因为您已经将custom-headers configmap部署到默认的命名空间,所以它应该是

代码语言:javascript
复制
data:
  proxy-set-headers: default/custom-headers
票数 2
EN

Stack Overflow用户

发布于 2021-10-15 12:23:12

我已经运行了一些测试,用户亚杜提供的答案应该是正确的。

问题解释:您正在为ConfigMaps使用proxy-set-headers配置选项。它描述得很好,这里

在将流量发送到后端之前,从命名configmap中设置自定义标头。值格式是命名空间/名称。请参阅示例

在本例中,您可以通过ConfigMap找到nginx入口控制器的配置,以便向上游服务器传递自定义的报头列表。

看看yaml示例:

代码语言:javascript
复制
apiVersion: v1
data:
  proxy-set-headers: "ingress-nginx/custom-headers"
kind: ConfigMap
metadata:
  name: ingress-nginx-controller
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

问题解决方案:您需要在此选项中使用适当的格式:

代码语言:javascript
复制
proxy-set-headers: "<your namespace>/custom-headers"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69556600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档