在 IIS 上一起发布 Angular 和 ASP.NET Core Web API 项目

问题描述 投票:0回答:1

我有两个项目需要在同一个 IIS 站点上一起发布。

其中一个项目是 Angular 应用程序,另一个是 ASP.NET Core Web API。

由于各种原因,Web API 项目必须是“主要”项目,即使它只为

/api
提供请求。

我考虑过在应用程序文件夹中发布 Angular 项目,但我需要对

http://mysite/home
的请求,例如由 Angular 路由处理。不幸的是,我不能使用
http://mysite/app/home

我发现的部分解决方案是按以下方式使用 URL 重写,但我仍然没有实现所需的行为,主要是由于重定向到

index.html
(显然,它不应该出现在 URL 中)。

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to app folder if exists" stopProcessing="true">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_URI}" pattern="^/api" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="^app/{R:1}$" />
          </conditions>
          <action type="Rewrite" url="/app/{R:1}" />
        </rule>
        <rule name="Redirect to index.html if not found in app" stopProcessing="true">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/api" negate="true" />
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
iis asp.net-core-webapi url-rewrite-module
1个回答
0
投票

您可以使用主机标头在不同的主机名上发布(因为不涉及https,因此不应该/可能不使用SNI)。因此 api.mysite.intra 网站指向另一个 IP 地址和 app.mysite.com 网站指向另一个IP地址。此选项的要求:

  1. 您应该在操作系统级别为相同网卡定义额外的IP地址。
  2. 应定义 DNS 条目。
  3. IIS 中将有两个不同的站点定义。每个都有自己的绑定。
  4. 在此选项中,应用程序和 api 使用相同的端口 (80)。 IIS 通过分析 http 请求的主机标头来区分请求。因此编写正确的 FQDN URI 地址至关重要。

另一种选择是使用端口区分http请求: 此选项的要求:

  1. 您应该为站点定义不同的端口(app.mysite.intra 使用端口 80,api.mysite.intra 使用端口 81)

  2. IIS 中会有两个不同的站点定义。每个都有自己的绑定。不会有任何主机头设置(留空)

  3. 只要端口正确就可以用不同的名称访问(http://api.mysite.intra:81为例)

此外,如果您有IP&域名限制模块,您可以限制使用源IP地址的网站的访问。例如,您可以限制仅来自本地主机 IP 地址的 api 访问。

© www.soinside.com 2019 - 2024. All rights reserved.