Skip to main content
 首页 » 编程设计

c#之如何在同一URL下托管多个.NET Core应用

2024年12月31日17unruledboy

我正在asp.net核心中构建一些网站(多个用户界面应用程序和一个Web API应用程序)。他们都利用Web API一起工作。就我的问题而言,我们将其称为App1,App2和App3。我将网站托管在IIS中。

通常,在旧的.net Framework(4.5.1)中,我将在IIS中拥有一个网站,其中包含多个Web应用程序来承载多个应用程序。像这样:

  • WebSite1-在端口443上运行
  • App1
  • App2
  • App3

  • 如果网站(WebSite1)在端口443上运行(使用SSL证书),则意味着可以通过一个域网址访问所有应用,如下所示:
  • https://www.myapp.com/App1/
  • https://www.myapp.com/App2/
  • https://www.myapp.com/App3/

  • 网址末尾使用不同的应用名称来标识它们。

    当托管新的asp.NET Core应用程序时,我也托管在IIS中,并按照asp.NET Core网站部署的文档,将每个.NET Core Web应用程序托管在IIS中的另一个站点中。

    因为我所有站点都有一个域名,例如 https://www.example.com(我使用的是SSL证书),所以我必须给其他网站提供不同的端口。所以我最终得到这样的东西:
  • WebSite1-在端口443上运行
  • WebSite2-在端口444上运行
  • WebSite3-在端口445上运行

  • 然后,可以通过以下域名URL访问所有这些应用程序:
  • https://www.example.com/https://www.example.com:443/
  • https://www.example.com:444/
  • https://www.example.com:445/

  • 如何将一个网站上的asp.NET Core应用程序托管为不同的“应用程序”,这意味着它们解析为相同的域名url( https://www.example.com和正斜杠应用程序名称标识我们想要的应用程序)?或者,如何使用端口配置我现在配置的所有路由并将它们全部路由,因此app1是example.com/的默认值,App 2是example.com/app2/的值,App 3是example.com/app3/的值?

    我是否完全以错误的方式看待此.NET Core部署?

    在此先感谢您的指导!

    请您参考如下方法:

    您可以使用反向代理为同一域上的多个ASP Net Core应用程序提供服务。
    我不确定使用IIS,但是您需要安装URL Rewrite,然后按照Microsoft提供的documentation进行操作(而且this one应该会有所帮助)。
    您还可以按照以下方式使用nginxlocation使用proxy_pass:

    ... 
    Some nginx Configuration  
    location /App1 { 
            proxy_pass http://127.0.0.1:443; 
        } 
    location /App2 { 
            proxy_pass http://127.0.0.1:444; 
        } 
    location /App3 { 
            proxy_pass http://127.0.0.1:445; 
        } 
    Other configurations... 
    

    然后,每次要向域中添加另一个ASP Net应用程序时,都需要添加另一个位置,在其他位置运行该应用程序,然后重新启动nginx。