当用户从Internet连接时,他总是被转发到容器A。
所有容器都包含asp.net核心mvc应用程序。
问题
我希望基于容器A内发生的决定,能够将客户端重定向到容器B或容器C。这些容器在未发布到互联网的端口5001和5002上运行。
我尝试过的事情
我试图为asp.net核心找到一些传递功能,但找不到任何功能。
答案 0 :(得分:0)
1)如果所有服务都具有相同的主机名和方案(http / https),请使用相对路径
2)如果否,请配置nginx反向代理,以提供以下标头的代理应用程序:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Host $host:$server_port
在asp应用程序中配置UseForwardedHeaders
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
....
app.UseForwardedHeaders();
它将使用由客户端发出的初始请求填充Request.Scheme和Request.Host。 使用此信息重定向
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-3.1