Kubetnetes ingress-nginx-rewrite模块使用

ingress rewrite 重定向

在kubetnetes使用中,需创建转发规则;

示例一:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: www.test.cn
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: test-admin
            port:
              number: 80
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: test-api
            port:
              number: 80

说明,访问http://www.test.cn/api/*内容会直接转发到svc集群中http://test-api/api/* 上,这里访问svc时会带上目录名称; 就是说  - path 的值转发给svc时也会追加到url中,在访问就会404,实际我们需要访问的地址http://test-api/*;

NameDescriptionValues
nginx.ingress.kubernetes.io/rewrite-targetTarget URI where the traffic must be redirectedstring
nginx.ingress.kubernetes.io/ssl-redirectIndicates if the location section is accessible SSL only (defaults to True when Ingress contains a Certificate)bool
nginx.ingress.kubernetes.io/force-ssl-redirectForces the redirection to HTTPS even if the Ingress is not TLS Enabledbool
nginx.ingress.kubernetes.io/app-rootDefines the Application Root that the Controller must redirect if it's in '/' contextstring
nginx.ingress.kubernetes.io/use-regexIndicates if the paths defined on an Ingress use regular expressionsbool

使用rewrite-target将请求转发到http://test-api/*;参考地址:Rewrite - NGINX Ingress Controller (kubernetes.github.io)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-api
  annotations:
    kubernetes.io/ingress.class: "nginx"    
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: www.test.cn
    http:
      paths:
      - path: /api(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: api-svc 
            port:
              number: 8080

按照要求我们需要在 path 中匹配前缀 api,然后通过 rewrite-target 指定svc,表达式说明((/|$)(.*)):两个括号用以分组,第一个是匹配 / 或者 $表示已经结束,第二组 .表示任意一个非换行符的字符 *表示0次或多次,两部分组合到一起就是,以 /匹配任意内容的,都转发到 /第二部分匹配到的文本。 ‘

此时在请求www.test.cn/api 就会转发到 api-svc上;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值