在.NET6 web中,ı正在用网关编写一个微服务体系结构。我的网关在本地5000端口上运行,
运行在本地的5001端口上的微服务,在本地的5002端口上运行的其他微服务--我想在微服务中进行分页,并且我用分页链接返回响应,如next,以前的.当我向网关上的微服务提出请求时,我得到的响应如下
"links": {
"_previous": "https://localhost:5001/api/customers/5/5?page=4&size=5",
"_next": "https://localhost:5001/api/customers/5/5?page=6&size=5",
"_first": "https://localhost:5001/api/customers/5/5?page=1&size=5",
"_last": "https://localhost:5001/api/customers/5/5?page=1207&size=5"
},
但是,我希望在网关的主机(localhost:5000)上提供链接,如下所示
"_previous": "https://localhost:5000/api/customers/5/5?page=4&size=5"
我看了一些问题,我在互联网上做了研究,但不知怎么的,我无法在微服务上找到一个网关主机。我该怎么做才能成为微服务网关的主机?
ı使用ocelot作为网关
发布于 2022-07-06 09:32:12
您需要让您的服务意识到它运行在反向代理后面。
// in ConfigureServices
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
// in Configure
app.UseForwardedHeaders();
欲知更多信息:配置ASP.NET核心以使用代理服务器和负载平衡器。
但是,我不确定Ocelot在转发请求时设置X-Frowarded
头。既然是被维护者抛弃,更好的选择是用成纱取代Ocelot。它做向所有请求添加所需的标头。
https://stackoverflow.com/questions/72741379
复制相似问题