开发者社区> 问答> 正文

如何使用nginx ingress正确设置自定义标头?

k8s小能手 2019-01-11 11:21:40 1105

我有以下配置:

daemonset:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nginx-ingress
namespace: nginx-ingress
spec:
selector:

matchLabels:
  app: nginx-ingress

template:

metadata:
  labels:
    app: nginx-ingress
spec:
  serviceAccountName: nginx-ingress
  containers:
  - image: nginx/nginx-ingress:1.4.2-alpine
    imagePullPolicy: Always
    name: nginx-ingress
    ports:
    - name: http
      containerPort: 80
      hostPort: 80
    - name: https
      containerPort: 443
      hostPort: 443
    env:
    - name: POD_NAMESPACE
      valueFrom:
        fieldRef:
          fieldPath: metadata.namespace
    - name: POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name
    args:
      - -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
      - -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret 

主配置:

apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: nginx-ingress
data:
proxy-set-headers: "nginx-ingress/custom-headers"
proxy-connect-timeout: "11s"
proxy-read-timeout: "12s"
client-max-body-size: "5m"
gzip-level: "7"
use-gzip: "true"
use-geoip2: "true"
自定义标头:

apiVersion: v1
kind: ConfigMap
metadata:
name: custom-headers
namespace: nginx-ingress
data:
X-Forwarded-Host-Test: "US"
X-Using-Nginx-Controller: "true"
X-Country-Name: "UK"
我遇到以下情况:

如果我更改“proxy-connect-timeout”,“proxy-read-timeout”或“client-max-body-size”之一,我可以看到控制器pod中生成的配置中出现的更改
如果我更改了“gzip-level”(甚至尝试过“use-gzip”)或“use-geoip2”之一,我看到生成的配置没有变化(例如:“gzip on;”总是被注释掉,没有其他的提到zip,gzip级别不会出现在任何地方)
“ingress-nginx / custom-headers”中的自定义标头根本没有添加(计划使用它们从geoip2传递值)
否则,一切都很好,控制器日志显示我唯一的后端(转储标头的expressJs应用程序)服务器正确,我得到预期的响应等等。

我从github上的示例中尽可能多地复制,进行了最少的更改但没有结果(包括查看自定义标题的示例时)。

分享到
取消 提交回答
全部回答(2)
  • bigbao222
    2019-07-17 23:25:14

    社区 nginx入口控制器,在哪里找到?

    0 0
  • k8s小能手
    2019-07-17 23:25:14

    看起来你正在使用NGINX本身的kubernetes-ingress而不是社区nginx入口控制器ingress-nginx。

    如果您看到kubernetes-ingress 支持的ConfigMap键,则不支持任何gzip选项。如果您看到ingress-nginx 的ConfigMap选项,您将看到可以配置的所有gzip密钥。

    尝试切换到社区 nginx入口控制器。

    0 0
添加回答

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程