我们有一个 Spring Cloud Gateway 的设置,它运行 consul 服务发现并将请求代理到集群中的服务。
当这些服务之一以标头响应时,该Location: /
标头会在通过网关的途中被重写。
问题是网关似乎添加了在 Consul 中找到的服务本地主机名和端口。这个 url 对客户端当然是不可用的(或不可取的)。
我已经验证了上游服务器发送:
Location: /
(由“redirect:/”Spring MCV 简写生成)
但是当它到达最终客户端时被重写为:
Location: https://10.0.0.10:34567/
(https://10.0.0.10:34567/是 consul 中服务的上游位置)
如果当然是不正确的。
我的问题是我找不到任何关于如何配置它的文档,也没有说明使用了哪些类(用于调试),所以我只是不知道从哪里开始寻找修复程序。
期望的行为当然是保持重定向不变。
在这种特殊情况下,我们使用基于主机的路由设置:
.route("app", r -> r.host("app.**").uri("lb://app"))
任何帮助或提示表示赞赏。