K8S(rancher)Nginx Ingress Controller 负载均衡多路径问题解决方案

背景


1598255758387-695.png

通过一个域名指向多个服务

  1. 二级路区分
  2. 类型tomcat部署方式

问题


1598255795393-359.png

路径请求存在问题

  1. 不是理想中的请求路径

解决方案


网上资源

 
  1. 大部分文档写着
    1. nginx.ingress.kubernetes.io/rewrite-target=/
  2. 问题没得到解决
    1. 是按照二级路径区分转发到了服务上,但是所以的请求都是 / 根路径
    2. 1598255866965-809.png

解决方案一

 

使用域名前缀方案

  1. 微服务名称-项目名称-公司-com
  2. 通过域名直接解析到微服务
    1. 该请求路径直接是到微服务路径
      1. 注意: 不要设置 nginx.ingress.kubernetes.io/rewrite-target=/
  3. 1598255909238-230.png

解决方案二

 

请求路径截取方案

  1. 通过通配符的方式,设置占位符,截取指定路径Url
  2. 示例
    1. /d/(.*)   -- iptest服务路径
    2. nginx.ingress.kubernetes.io/rewrite-target=/$1
  3. 原理
    1. Nginx 路径重写功能原理
  4. 1598256025043-790.png

配置方式截图

1598256047099-606.png

 

备注


  1. 一个问题可以有多个解决方案。
  2. 使用哪种解决方案取决自己实际情况。
  3. 推荐使用
    1. 只有一个服务暴露的可以使用方案一
    2. 集成模型系统可以使用方案一
    3. 一个中心(项目)下N那个服务,可以使用方案二
posted @ 2020-08-24 16:04  atliwen  阅读(4912)  评论(0编辑  收藏  举报