【问题标题】:Zuul or eureka set host header to service instance hostZuul 或 eureka 将主机头设置为服务实例主机
【发布时间】:2016-01-07 10:20:12
【问题描述】:

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

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

不应该改用x-forwarded-host的地址吗?如何强制 zuul/eureka 这样做?或者我们应该调整一些 spring-boot 配置来使用它而不是host

【问题讨论】:

  • 如果您使用 spring mvc 实用程序构造重定向的绝对 URL(而不是 /context)(不记得是哪个,或者我会把它放在答案中)他们将尊重代理标头。这就是 zuul 背后 spring-data-rest 的工作方式(而不是重定向,它是链接 url)。

标签: spring spring-cloud netflix-eureka netflix-zuul


【解决方案1】:

您的服务正在使用它自己的主机发送一个位置标头。您要么修改服务以引用您的基本主机,要么编写一个 zuul 过滤器,在将响应头发送到客户端之前对其进行修改。

这里是过滤器指南:https://github.com/Netflix/zuul/wiki/Writing-Filters

您可以通过RequestContext修改标题。

如果您使用过滤器制作 bean,它将被注册而无需代表您执行任何操作。

【讨论】:

  • 谢谢,看来 zuul 正在更改 'host' 标头。现在我们从 nginx 传递 'x-forwarded-host' 并将其设置为 ZuulFilter 中的 'host' ,工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2011-09-21
  • 2016-04-16
  • 1970-01-01
相关资源
最近更新 更多