2

我正在尝试使用来自 kubernetes 的重写目标,gcloud但它似乎没有得到尊重。我的代码如下。也许有一些我没见过的东西:

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. 我真的没有想法,我可以使用一些帮助。

4

3 回答 3

1

我假设您使用的是 kubernetes ingress-nginx。

查看您的入口清单,似乎重写注释是错误的。

根据文档,它应该是:nginx.ingress.kubernetes.io/rewrite-target

这是文档的链接:

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/annotations.md#rewrite

于 2018-04-01T23:35:38.597 回答
1

如果你曾经使用helm安装nginx ingress,也可以看一下helm chart目录下的rewrite示例。可以在<helm-chart-directory>/examples/rewrite. 应该有一个 README.md 应该有帮助。

就我而言,所需的注释是nginx.org\rewrite:"<service-name-1>:<rewrite-target-1>;<service-name-2>:<rewrite-target-2>"

于 2020-07-14T14:00:24.623 回答
1

该术语具有误导性:它与传入请求rewrite-target的路径有关。

这可能有效:一个入口只用于前端和一个入口,一个入口rewrite-target: /只用于后端。path: /rewrite-target: /apipath: /

于 2018-04-04T16:54:31.633 回答