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

文章详细解释了在KubernetesIngress资源中使用nginx配置时,如何利用正则表达式进行URL重写,特别是关于分组和$1、$2符号的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值