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

标签 nginx nginx-ingress

我在 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

我有几个要设置 Cache-ControlMyCustomHeader 的 header 。但我希望仅为根路径 / 设置这些 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: /

没有标题

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

关于nginx-ingress 为特定路径添加自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61948822/

相关文章:

docker - 同一部署的2个Pod同时重启

nginx - 单个 NGINX-Ingress Controller ,用于在单独命名空间中具有资源的子域

php - Nginx 运行 Wordpress 错误地将 www 重定向到非 www

javascript - Angular JS 路由不显示我的 html 文件

到 Cloudant 的 NGINX 代理

nginx - 可以从Nginx入口 Controller 中的https重定向中排除一页

Django,为什么我在托管期间需要 nginx 和 uWSGI?

ruby-on-rails - Rails 请求返回状态 200 但没有响应数据

kubernetes - 入口 Controller nginx 从 basic_auth 中排除 IP

kubernetes - 如何将多个证书添加到具有 SUB 域 (SNI) 的同一 IP 的入口?