前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ingress中虚拟路径解决方案

ingress中虚拟路径解决方案

作者头像
dogfei
发布2020-08-19 02:13:28
2.6K1
发布2020-08-19 02:13:28
举报
文章被收录于专栏:devops探索devops探索

背景

有这样一种场景,当我们有一个使用java写的项目,比如这个时候做了前后端分离,由一个服务变成了俩服务,这个时候前端访问地址比如说是:www.a.com,这个服务需要掉后端接口,比如www.b.com,这个时候倒是可以,但是使用了两个不同的域名,并且这本来就是一个项目,所以正常来说应该使用一个域名,即www.a.com/api,类似这种。 但是这样会有一个问题,在进行请求时,由于使用了一个域名,而后面的URI是不一样的,所以要么修改代码,加上这么一层路径,要么修改nginx的location,在转发时把携带的路径给去掉。 第一种方式可行,但是如果项目非常多,几十个项目,这种情况协调起来都费劲,所以通过nginx,把路径去掉,这种方式不需要研发做任务调整,还是非常灵活的。

结合ingress实现基于虚拟路径的转发

上面也说了,通过nginx可以很灵活的解决虚拟路径的问题,但是我们用的是ingress,那该如何解决呢? 下面是通过rewrite的方式解决的

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

# cat user.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: user-server namespace: default annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/rewrite-target: /$1 spec: rules: - host: usermanage.ysmty.com http: paths: - backend: serviceName: user-thirdparty-api servicePort: 8080 path: /userapi/(.*) - backend: serviceName: user-manage-web servicePort: 8080 path: /(.*)

结合了正则,通过把捕获匹配到的部分给重写。这样,便可以解决同一个域名,通过不同的虚拟路径转发到不同的后端(service)中

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 结合ingress实现基于虚拟路径的转发
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档