Zuul 在路由后重写主机名

Zuul Rewrites Host Name after Routing

每当请求到达 Zuul 时,我都会收到一个 302 重定向到要调用的实际服务的主机。所以 url 被 Zuul 重写了。我想阻止这种情况。用户应该只能看到 Zuul 的主机名。

我有一个 Spring Cloud Zuul 用作路由服务器。它具有以下配置:

zuul:
  ignoredServices: '*'
  routes:
    service1:
      path: /service1/**
      serviceId: service1
      stripPrefix: false
    service2:
      path: /service2/**
      serviceId: service2
      stripPrefix: false
    login:
      path: /login/**
      sensitiveHeaders:
      serviceId: login
      stripPrefix: false

Zuul 使用 Eureka 进行服务发现。假设 logingatewaylocalhost:8081 上是 运行,在 localhost:8080 上是 Zuul。如果去localhost:8080/login,我会先得到一个302,然后再去localhost:8081/login。我不想要 302 重定向,我希望主机名保持不变。我没有找到关于这个问题的任何相关文件。谢谢。

正如@spencergibb 评论的那样,Zuul 没有对 HTTP 响应进行任何重写。也有一个未解决的问题:https://github.com/spring-cloud/spring-cloud-netflix/issues/8。共识是 Zuul 不会提供,但范围缩小到只重写位置 header,这是 302 重定向响应的一部分。您可以关注该问题以查看它的去向,但就目前而言,使用 Zuul built-in 过滤器是不可能的。

您始终可以为 Zuul 创建您自己的 Post 过滤器来自行执行此操作。查看 Zuul 文档以了解何时执行过滤器:https://github.com/Netflix/zuul/wiki/How-it-Works then read on how to write your own filter: https://github.com/Netflix/zuul/wiki/Writing-Filters