通常,入口重写目标的工作方式如下:
nginx.ingress.kubernetes.io/rewrite-target: /
这将重写您的服务名称的目标,因为它们位于根目录中 . 所以,如果我有这个:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
rules:
http:
paths:
- path: /
backend:
serviceName: front-main
servicePort: 80
- path: /api
backend:
serviceName: back-main
servicePort: 80
我的服务将在 /
中接收数据 . 但是,我希望我的服务 front-main
发送根 /
并为服务器 back-main
发送 /someotherpath/
. 我怎样才能做到这一点?
有类似下面的行吗?
nginx.ingress.kubernetes.io/rewrite-target: "front-main: / ; back-main: /someotherpath"
我似乎没有在文档中找到答案 .
1 回答
不幸的是,基于免费版Nginx的Ingress没有这个功能 .
但是,如果您可以使用Nginx Plus based Ingress,则可以通过注释来完成 .
这是来自官方回购的example:
下面是如何重写对
tea-svc
的请求的URI的示例(请注意,/ tea请求被重定向到/ tea /) .下面是如何重写对
coffee-svc
的请求的URI的示例(请注意,/ coffee请求被重定向到/ coffee /) .