我只需要为根路径重写目标,但所有其他路径必须正常工作。
我尝试了以下规则,但它没有重定向到/somePath。相反,它会进入正常的根目录。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test-web-app-other
spec:
ingressClassName: nginx
tls:
- hosts:
- test.example.com
secretName: tls-example
rules:
- host: test.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webapp
port:
name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test-web-app-root
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /somePath
nginx.ingress.kubernetes.io/upstream-vhost: "example.com"
spec:
ingressClassName: nginx
tls:
- hosts:
- test.example.com
secretName: tls-example
rules:
- host: test.example.com
http:
paths:
- path: /
pathType: Exact
backend:
service:
name: webapp
port:
name: http
---
如果我尝试nginx.ingress.kubernetes.io/use-regex: "true"
与path: "/(.+)"
为入口-测试-web-应用程序-其他,我得到404打开根路径。
我错过了什么吗?
如果您的应用程序正在监听/somePath,换句话说,如果它的根路径在/somePath所有发送到/的请求都将重定向到/somePath,而不是/。查看此处的示例。
如你所见:
nginx.ingress.kubernetes。Io/app-root注释定义了如果它在'/'中,控制器必须重定向的应用程序根上下文。
使用上面的注释和下面的例子,如果你有任何错误,试着把错误贴出来。
根据ingress文档,创建一个带有app-root注释的ingress规则,如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/app-root: /app1
name: approot
namespace: default
spec:
ingressClassName: nginx
rules:
- host: approot.bar.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: http-svc
port:
number: 80