【发布时间】:2019-09-10 18:38:51
【问题描述】:
我相信我必须创建多个Ingress资源才能达到预期的效果,但必须问,是否可以为同一主机使用nginx(社区)控制器进行多个rewrite annotations?
我有以下内容,但据我了解,它不起作用,因为无法将重写规则显式链接到路径。在这种情况下,我想它可以利用捕获组数量不同的事实,但情况并非总是如此。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: https://staging.example.com/keyword-lnk/badnewsbears/$1/$2
nginx.ingress.kubernetes.io/rewrite-target: https://staging.example.com/lnk/$2
certmanager.k8s.io/cluster-issuer: staging-letsencrypt-prod
spec:
rules:
- host: staging.example.com
http:
paths:
- path: /
backend:
serviceName: api-service
servicePort: http
- host: badnewsbears.example.com
http:
paths:
- backend:
serviceName: api-service
servicePort: http
path: ^(/a/)(.*)$
- backend:
serviceName: api-service
servicePort: http
path: ^/([tbc])/(.*)
tls:
- hosts:
- staging.example.com
- badnewsbears.example.com
secretName: letsencrypt-prod-issuer-account-key
# ^ must be set to the key matching the annotation
# certmanager.k8s.io/cluster-issuer above
目标是让对staging.example.com 的请求没有重写,但对badnewsbears.example.com/t/soup 的请求重写为https://staging.example.com/keyword-lnk/badnewsbears/t/soup,而
badnewsbears.example.com/a/soup 产生 https://staging.example.com/lnk/$2
有没有办法在Ingress(或其他地方)中指定重写目标->路径的映射,或者我必须将同一主机的不同重写规则分成不同的
【问题讨论】:
标签: kubernetes kubernetes-ingress nginx-ingress