我正在努力在 kubernetes 上的 nginx-ingress 上制定重写/替换规则。 我想将前缀 https:///foo 替换为 https:///services/goo 任何人都可以为此建议入口文件吗?
感谢和问候。
您可以使用重写规则来替换入口规则中的前缀。 rewrite-target 注解通常在 ingress 中使用,用于在将请求转发到后端服务之前替换前缀或执行其他 URL 转换。
这是一个入口配置示例,它使用 rewrite-target 注释将前缀 https://foo 替换为 https://services/goo。
api版本:networking.k8s.io/v1
种类:Ingress
元数据:
name: my-ingress
annotations: [nginx.ingress.kubernetes.io/rewrite-target:](http://nginx.ingress.kubernetes.io/rewrite-target:) [https://services/goo/$1](https://services/goo/$1)
规格:
规则:
- host: [example.com](http://example.com)
http:
paths:
- path: /foo/?(.\*)
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
在上面的示例中,注释 - nginx.ingress.kubernetes.io/rewrite-target 用于指定替换模式。注释中的 $1 指的是从路径字段中的正则表达式捕获的组。
路径字段定义 /foo/ 路径的前缀匹配。当收到与此路径匹配的请求时,入口控制器会将 URL 重写为 https://services/goo/$1,其中 $1 是 URL 中 /foo/ 前缀之后的部分。
这样,如果您访问 https://example.com/foo/some-path,入口控制器将重写为 https://services/goo/some-path 并将请求转发到后端服务。