我尝试在gcloud中使用kubernetes的重写目标,但它似乎没有得到尊重。我的代码如下。也许有我没看到的东西:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo-ingress
annotations:
ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.global-static-ip-name: projectip
spec:
rules:
- host: mycustomdomain.com
http:
paths:
- path: /*
backend:
serviceName: frontend
servicePort: 80
- path: /api/*
backend:
serviceName: backend
servicePort: 80当我执行curl mycustomdomain.com/api/something时,我的后端总是接收backend/api/something而不是backend/something。我真的没有办法了,我需要一些帮助。
发布于 2018-04-02 07:35:39
我假设您使用的是kubernetes ingress nginx。
查看您的入口清单,似乎重写注释是错误的。
根据文档,它应该是: nginx.ingress.kubernetes.io/rewrite-target
以下是th文档的链接:
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/annotations.md#rewrite
发布于 2018-04-05 00:54:32
术语rewrite-target具有误导性:它是关于传入请求的路径。
这可能是可行的:将一个带有rewrite-target: /和path: /的入口仅用于前端,将一个带有rewrite-target: /api和path: /的入口仅用于后端。
发布于 2020-07-14 22:00:25
如果您已经使用helm安装了nginx ingress,您还可以查看helm图表目录中的重写示例。它可以在<helm-chart-directory>/examples/rewrite上找到。应该有一个README.md,它应该会有帮助。
在我的例子中,所需的注解是nginx.org\rewrite:"<service-name-1>:<rewrite-target-1>;<service-name-2>:<rewrite-target-2>"
https://stackoverflow.com/questions/49576991
复制相似问题