代码之家  ›  专栏  ›  技术社区  ›  ovasylenko

Linux操作系统ASP.Net核心与Apache和反向代理

  •  0
  • ovasylenko  · 技术社区  · 6 年前

    我需要澄清的设置过程ASP.NETLinux上的核心应用程序。我用Apache作为服务器,我想用它作为反向代理。在我的ASP.NET核心应用,我有这样一个设置:

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.Configure<ForwardedHeadersOptions>(options =>
    {
        options.ForwardedHeaders =
            ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    });
    
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    

    而且在程序.cs我有:

    var host = WebHost.CreateDefaultBuilder(args)
        .UseKestrel()
        .UseUrls("https://*:5001")
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();
    

    我的问题是:

    1. 我需要这些转发的邮件头吗?
    2. app.UseHttpsRedirection(); 加入我的项目?
    3. 我需要详细说明吗 UseUrls("https://*:5001")
    4. 我是否需要在我的Kestrel(我的应用程序)上使用https,或者如果我有反向代理,我可以使用http和Apache来处理ssl?
    5. 我的电脑里还需要其他代码吗ASP.NET核心应用程序使其与反向代理一起工作?
    1 回复  |  直到 6 年前
        1
  •  4
  •   poke    6 年前

    我需要这些转发的邮件头吗?

    一般来说,是的。反向代理的工作方式是,它们基本上接收最终用户的请求,然后通过

    这意味着您的应用程序只知道内部请求,因此,例如,也只能生成内部URL。为了教你的应用程序关于外部URL,你可以使用反向代理提供的转发头,这样你的应用程序就可以恢复原始请求的样子。这样,你的应用程序就能知道公众的请求,并能正确响应。

    我需要补充吗 app.UseHttpsRedirection();

    不一定。HTTPS重定向基本上是一种功能,它将自动响应HTTP请求,并重定向到HTTPS。通常情况下,应用程序前面的反向代理会处理这个问题,所以当直接使用Kestrel时,这个功能最有意义。

    但是如果你想在你的应用程序中使用这个功能,你仍然可以使用这个功能,而不是在你的反向代理中。如果您的反向代理在HTTP和HTTPS上为您的应用程序提供服务,并且如果它也在转发头中正确转发方案,那么您的应用程序可以正确检测到这一点并重定向到HTTPS。

    从安全的角度来看,反向代理最好(也可能更简单)不将任何HTTP请求转发到应用程序,而直接重定向到HTTPS。

    我需要详细说明吗 UseUrls("https://*:5001")

    这也取决于你想如何在内部设置你的应用程序。 ,因为您的反向代理是公开可见的,所以您不需要在内部使用HTTPS,这通常也会以较少的开销获得更好的性能(并且它降低了证书的配置复杂性)。但在某些情况下,您可能希望在内部使用HTTPS,以使应用程序更安全,并更好地保护其传输的数据。这完全取决于你。

    UseUrl() 打个电话就可以了 ASPNETCORE_URLS 用于指定内部宿主URL和端口的环境变量。这样,您可以更灵活地适应环境变化,只需在部署应用程序时选择系统上的端口,而不必仅为切换内部端口而重新编译应用程序。

    我是否需要在我的Kestrel(我的应用程序)上使用https,或者如果我有反向代理,我可以使用http和Apache来处理ssl?

    如上所述,设置是 通常

    我的电脑里还需要其他代码吗ASP.NET核心应用程序使其与反向代理一起工作?