map指令未正确读取nginx入口控制器kubernetes

时间:2019-07-08 20:01:33

标签: dictionary nginx kubernetes controller

这是ConfigMap资源:

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  use-proxy-protocol: "false"
  use-forwarded-headers: "true"
  proxy-real-ip-cidr: "0.0.0.0/0" # restrict this to the IP addresses of ELB
  http-snippet: "map $http_origin $cors {
          hostnames;

          default       'default.com';
          .local        $http_origin;
          .blah.org $http_origin;
      }"

然后,我获得了以下Ingress资源,该资源正在从我之前在ConfigMap nginx.ingress.kubernetes.io/cors-allow-origin: "$cors"上设置的map指令中读取值:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: "default"
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-origin: "$cors"
    nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
    nginx.ingress.kubernetes.io/cors-allow-methods: "GET, HEAD, OPTIONS"
    nginx.ingress.kubernetes.io/cors-allow-headers: "Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With"
    .
    .
    .

我遇到的问题是注释未正确读取map指令上设置的$ cors变量,并且生成的nginx.conf文件始终设置“ add_header'Access-Control-Allow-Origin'响应标头改为“ *”。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

这是在nginx.ingress.kubernetes.io/cors-allow-origin批注中实施CORS的众所周知的行为,仅限于单个值(具有硬编码格式)或*,着眼于Nginx Ingress控制器documentation:< / p>

  

nginx.ingress.kubernetes.io/cors-allow-origin控制什么   接受CORS的原产地。这是一个字段值,   格式如下:http(s)://origin-site.com或   http(s)://origin-site.com:port

因此,为了在原始标头中支持多个域,我假设您可能考虑注入一些有助于工作的脚本。有一个专用的FR #1171,其中有@claudiuchis提供的摘要来完成它。