Spring Zuul或eureka将主机头设置为服务实例主机

Spring Zuul或eureka将主机头设置为服务实例主机,spring,spring-cloud,netflix-eureka,netflix-zuul,Spring,Spring Cloud,Netflix Eureka,Netflix Zuul,我们正在使用同一服务的三个实例,它们在eureka中注册。他们前面有一个苏尔 每当我们的服务尝试重定向到其中一个控制器(例如/login)时,它会直接转到hostname:port(在浏览器地址字段中可见),而不是再次通过zuul代理。这给了我们时间。 我们正在跟踪投入服务的头文件-有host头文件设置为我们服务的主机名 它不应该使用来自x-forwarded-host的地址吗?如何迫使祖尔/尤里卡这样做?或者我们应该调整一些spring引导配置来使用它。host?您的服务正在用自己的主机发送位

我们正在使用同一服务的三个实例,它们在eureka中注册。他们前面有一个苏尔

每当我们的服务尝试重定向到其中一个控制器(例如/login)时,它会直接转到hostname:port(在浏览器地址字段中可见),而不是再次通过zuul代理。这给了我们时间。 我们正在跟踪投入服务的头文件-有
host
头文件设置为我们服务的主机名


它不应该使用来自
x-forwarded-host
的地址吗?如何迫使祖尔/尤里卡这样做?或者我们应该调整一些spring引导配置来使用它。
host

您的服务正在用自己的主机发送位置头。您可以修改服务以引用您的基本主机,或者编写一个zuul筛选器,在将响应头发送到客户端之前修改响应头

以下是过滤器指南:

您可以通过
RequestContext
修改标题


如果您从过滤器中生成一个bean,它将在不代表您的任何操作的情况下注册。

如果您使用spring mvc实用程序(不记得是哪一个,或者我会将其放在答案中)为重定向(而不是/context)构建绝对URL,它们将遵守代理头。这是SpringDataREST在zuul后面的工作方式(不是重定向,而是链接URL)。谢谢,zuul似乎在更改“主机”头。现在我们正在从nginx传递'x-forwarded-host',并在ZuulFilter中将其设置为'host',works:)