【问题标题】:spring cloud gateway, can you exclude paths (do a global !=)spring cloud gateway,你能排除路径吗(做一个全局的!=)
【发布时间】:2018-10-16 18:19:38
【问题描述】:

我希望有人可以在这里提供一些想法。我正在玩一些用于 spring 云网关的示例应用程序并浏览文档,但我没有看到任何路由到自我或进行全局忽略的方法。这里的想法是,有些路径总是需要指向自身,例如执行器,而其他路径可能需要全局阻止(可能出于安全原因,例如您发现了严重的漏洞并需要禁用对具体资源)。现在据我所知,没有办法做到这一点,但我希望我错了!

我已经设置了应用程序,执行器在端口 8081 上运行,服务器在 8080 上运行。 我有两个简单的规则:

  - id: local_test_1
    uri: http://localhost:80
    order: 9000
    predicates:
    - Path=/echo
  # =====================================
  - id: local_test_2
    uri: ${test.uri}
    order: 10000
    predicates:
    - Path=/**

但通用 /** 确保对 localhost:8081/actuator/* 的任何调用也被路由到 uri。如何使管理端口不受路由规则的约束,以便服务器自己处理请求?

我认为像 - Path!=${management.server.port}/* 这样的默认过滤器可能会起作用,但似乎不支持 !=。

【问题讨论】:

    标签: spring-boot-actuator spring-cloud-gateway


    【解决方案1】:

    您可以使用no://op 作为uri: 的值。

    我看到的唯一缺点是,任何不应找到的端点(如/actuator/foo)仍会返回 200 OK。

    【讨论】:

      【解决方案2】:
        - id: local_test_1
          uri: http://localhost:80
          order: 9000
          predicates:
            - Path=/echo
        # =====================================
        - id: local_test_2
          uri: ${test.uri}
          order: 10000
          predicates:
            - Path=/**
      

      尝试在- Path前加两个空格,问题可能是你的配置不起作用。

      【讨论】:

        【解决方案3】:

        也许您可以将- Path=/**- setStatus=404 用于其过滤器和执行器路由- Path=/actuator/**- setStatus=ACCEPTED,不要忘记uri: no://op 用于两者

        【讨论】:

          猜你喜欢
          • 2019-09-16
          • 2023-01-21
          • 2021-10-26
          • 1970-01-01
          • 2019-07-26
          • 2018-07-15
          • 2020-12-15
          • 1970-01-01
          • 2019-06-10
          相关资源
          最近更新 更多