Nginx ingress controller rewrite-target 官网例子详解

2023-12-14 05:43:24
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  ingressClassName: nginx
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: http-svc
            port: 
              number: 80

这会导致:

rewrite.bar.com/something 被重写为 rewrite.bar.com/
rewrite.bar.com/something/ 被重写为 rewrite.bar.com/
rewrite.bar.com/something/new 被重写为 rewrite.bar.com/new
首先,我们需要一些有关于正则表达式的知识:
正则表达式中的括号代表分组,匹配第一个括号中的内容的部分就是第一组用$1表示,匹配第二个括号中的内容的部分就是第二组用$2表示。
第一个括号中的内容是
匹配正斜线 或 一句结尾
第二个括号中的内容是
点匹配任意字符,星号表示匹配0或者多个它的前面的字符,合起来的意思就是第一部分后面剩下的所有字符都被第二部分捕捉
现在再来看我们的例子
例子一 第一部分匹配了 美元符号 第二部分没有被匹配,为空
因此 /something被重写为 /$2 也就是 /空 也就是 /
例子二 第一部分匹配了 /
同理 $2为空, /something被重写为 /
例子三 第一部分匹配了 / 第二部分匹配了 new
$2 = new
/something/new 被重写为 /new

文章来源:https://blog.csdn.net/huaiyingdetective/article/details/134985786
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。