Spring Cloud Gateway,您可以排除路径(执行全局!=)

时间:2018-10-16 18:19:39

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

我希望有人可以在这里提供一些想法。我正在使用Spring Cloud Gateway的一些示例应用程序,并浏览了文档,但是我没有看到任何路由到self或进行全局忽略的方法。这里的想法是,总有一些路径需要指向自身,例如对于执行器,还有一些路径可能需要全局阻止(也许出于安全原因,例如您发现了严重的漏洞并需要禁止访问具体资源)。从目前的情况看,我无法做到这一点,但我希望我做错了!

我已经设置了应用程序,执行器在端口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} / *可能有效,但似乎不支持!=。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

  - 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之前添加两个空格,问题可能出在您的配置不起作用。

答案 2 :(得分:0)

也许您可以将- Path=/**- setStatus=404用于其过滤器,并将执行器路径- Path=/actuator/**- setStatus=ACCEPTED用于{