【发布时间】:2021-01-02 13:55:56
【问题描述】:
我的入口资源上的“nginx.ingress.kubernetes.io/rewrite-target”注释似乎没有做任何事情。当我将path: /helloworld 更改为path: / 时,一切正常。我尝试将注释的值放在双引号中并将注释的顺序更改为无效。我错过了什么?看起来这应该是相当简单的。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: helloworld-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: <NGINX_CONTROLLER_EXTERNAL_IP>.xip.io
http:
paths:
- backend:
serviceName: helloworld-svc
servicePort: 80
path: /helloworld
【问题讨论】:
-
那么你到达后端服务了,但是路径还是
/helloworld? -
我经常看到与正则表达式一起使用的重写目标。 IE。
nginx.ingress.kubernetes.io/rewrite-target: /$2和path: /helloworld(/|$)(.*)。这样,您将重写以删除/helloworld,但保留路径的其余部分。但是,如果您总是想重写根路径,我认为它应该像您所做的那样工作.. :thinking: -
@ChristianFosli 你是对的。它应该可以工作,并且在大多数情况下都可以。事实证明,问题也与路径指向的服务有关。它是一个服务于 React.js 应用程序的 Nginx 服务器。我添加了一个答案,其中包含指向有关该问题的更详细帖子的链接。无论如何,感谢您的努力。
-
不用担心 :-) 是的,因为 React.js 在客户端工作,所以这种重写不会有任何区别。
标签: kubernetes kubernetes-ingress nginx-ingress