nginx-ingress 为特定路径添加自定义 header

nginx-ingress add custom header for a specific path

我在 kubernetes 环境中有以下 nginx-ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "cache-control: no-store";
      more_set_headers "MyCustomHeader: Value";
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: svc1
          servicePort: 80
          # Want to add the custom headers in this path only
        path: /
      - backend:
          serviceName: svc2
          servicePort: 80
        path: /cacheable-path

我有几个 header 想设置 Cache-ControlMyCustomHeader。但我希望这些 header 只为根路径 / 设置,而不是为其他路由(如 /cacheable-path)设置。

如何实现?添加注释会导致 header 附加到所有响应。我只想将 header 添加到特定路径。

无法为单个 Ingress 资源中的特定路径添加 header。您将必须创建两个 Ingress 资源。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "cache-control: no-store";
      more_set_headers "MyCustomHeader: Value";
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: svc1
          servicePort: 80
        path: /

没有header

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: svc2
          servicePort: 80
        path: /cacheable-path