我在 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-Control
和 MyCustomHeader
的 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/