为域和子域上的两个 Angular 应用配置 IIS

为域和子域上的两个 Angular 应用配置 IIS

我遇到了一些无法配置的复杂场景。

我需要一个 web.config 文件来配置 IIS 以服务 2 个 Angular 应用。第一个将在 domain.com 上运行,第二个将在 sub.domain.com 上运行

现在有效的修复方法是将第一个应用程序 (domain.com) 放在 wwwroot 中,将第二个应用程序 (sub.domain.com) 放在第一个应用程序内的文件夹中。web.config:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
    <system.webServer>
      <rewrite>
        <rules>

          <rule name="Redirect subdomain" enabled="true">
            <match url="^(.*)$"/>
            <conditions>
                <add input="{HTTP_HOST}" pattern="^sub\.domain\.com$"/>
            </conditions>
            <action type="Rewrite" url="subfolder/{R:1}"/>
          </rule>

        </rules>
      </rewrite>
    </system.webServer>
  </configuration>

问题是我需要添加一些仅适用于第一个应用程序的 URL 重写规则。如果我将它们添加到 web.config 文件中,那么由于我添加的规则,第二个应用程序将重定向到第一个应用程序。

理想的解决方案是这样的

wwwroot

  • 第一个应用程序
    • ...
    • web.config(添加url重写规则)
  • second_app_v2.1
    • ...
  • web.cofig ( if (我们在 sub.domain.com 上) { 转到第二个应用程序 } else { 转到第一个应用程序 } )

这样部署会更安全,如果我需要返回执行不同的版本,也会容易得多。我是这项技术的新手,如果有更好的方法,我将不胜感激。

答案1

我使用 asp.net mvc,不知道你是否使用。

我只需读取传入域,并根据域呈现适当的 angular 配置视图。这似乎比弄乱web.config和重写 URL 更容易。显然,您将根据要呈现的视图/angular 应用程序提供适当的 js 文件。

服务器上的逻辑将非常少。在 IIS 中,您只需将两个域指向同一个 asp.net 文件夹即可。此解决方案基本上涉及在一个 asp.net 网站的上下文中创建两个 SPA。

如果您有兴趣,我很乐意发布执行此操作的代码。

相关内容