首页 > 解决方案 > 重定向内部网络中的外部 http 连接

问题描述

网络结构
在此处输入图像描述

当用户从互联网连接时,他总是被转发到容器 A。

这些容器都包含 asp.net core mvc 应用程序。

问题
我希望,根据容器 A 中发生的决定,能够将客户端重定向到容器 B 或容器 C。这些容器在未发布到 Internet 的端口 5001 和 5002 上运行。

我试过的

我试图为 asp.net 核心找到一些直通功能,但找不到任何功能。

标签: c#asp.net-mvcnginxasp.net-corenginx-reverse-proxy

解决方案


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


推荐阅读