gateway网关不走本地问题

gateway网关不走本地问题

  • 原始网关配置
[
  {
    "id": "lecent-park",
    "order": 0,
    "predicates": [
      {
        "name": "Path",
        "args": {
          "pattern": "/lecent-park/**"
        }
      }
    ],
    "filters": [],
    "uri": "lb://lecent-park-cy"
  }
]
  • 解决后配置

将order值设置为-1

[
  {
    "id": "lecent-park",
    "order": -1,
    "predicates": [
      {
        "name": "Path",
        "args": {
          "pattern": "/lecent-park/**"
        }
      }
    ],
    "filters": [],
    "uri": "lb://lecent-park-cy"
  }
]
  • 原因分析
  1. 路由配置自动装配到route
  2. 在请求进来的时候进行路由匹配
  3. 在路由匹配的时候是循环所有路由,直到匹配成功返回PathPattern对象

问题就出来匹配的时候,因为同一个路由(/lecent-park/**)有多个,先匹配到谁就返回谁

  • debug 截图
  1. 装配路由(有两个)
    gateway网关不走本地问题_第1张图片
    gateway网关不走本地问题_第2张图片

  2. 匹配路由(如果order=0)
    gateway网关不走本地问题_第3张图片
    走的路由是lecent-park

  3. 如果order=-1
    gateway网关不走本地问题_第4张图片
    第一次就匹配到lecent-park-cy

你可能感兴趣的:(Java,spring,gateway)